MQ消息队列简单介绍+代码

本文探讨了MQ(消息队列)在高并发环境中的关键作用,包括异步处理、应用解耦、流量削峰及消息通讯。通过介绍MQ的基本组件如Broker、Producer和Consumer,以及队列和主题的概念,阐述了如何利用MQ缓解数据库压力,实现负载均衡,并提供了基于Java的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MQ是一个消费者-生产者模型,可以将无需即使返回的操作提取出来,异步处理。在高并发的环境下sql来不及处理,请求会发生阻塞,通过MQ可以缓解压力。

可以用JMS(Java Message Service)兼容MQ,如ActiveMq就是支持JMS的开源MQ。

消息中间件的组成:
Broker:消息服务器,作为server提供消息核心服务
Producer:消息生产者
Consumer:消息消费者
Topic:主题, 发布/订阅下的消息统一汇集地 , 实现1vN
Queue:队列, PTP模式下, 生-Queue-订, 实现负载均衡

activemq主页:
localhost:8161/admin/
admin / admin
broker 一般是61616端口

主要应用:
1.异步处理
2.应用解耦
3.流量削峰
4.消息通讯(聊天室)

简单代码:
1.定时器
@Component
@EnableScheduling
public class PromoteActProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Producer producer;
@Autowired
private Queue queue;
@Scheduled(fixedDelay = 2000) // 每2s执行1次
public void send() {
Destination destination = new ActiveMQQueue(“mytest.queue”);
for(int i=0; i<3; i++){
producer.sendMessage(destination, “myname is HjwJames!!!”);
}
}
}

2.消费者
@Component
public class Consumer {
@JmsListener(destination = “mytest.queue”)
@SendTo(“out2.queue”)
public String receiveQueue2(String text) {
System.out.println(“Consumer2收到的报文为:”+text);
return “return message”+text;
}
// 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
@JmsListener(destination = “mytest.queue”)
@SendTo(“out.queue”)
public String receiveQueue(String text) {
System.out.println(“Consumer收到的报文为:”+text);
return “return message”+text;
}
}

3.生产者
@Service(“producer”)
public class Producer {
@Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
private JmsMessagingTemplate jmsTemplate;
// 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessage(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值