今天学习了springboot整合ActiveMQ。
首先开启ActiveMQ,并导入坐标:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
其次导入配置:
spring: activemq: broker-url: tcp://localhost:61616 # 服务端口:61616 管理后台端口:8161 jms: template: default-destination: position # 把消息放到服务器指定位置 pub-sub-domain: true # 开启发布订阅模式,false是点对点的模式
接下来是实现:
@Service public class MessageServiceActivemalmpl implements MessageService { @Autowired //客户端注入 private JmsMessagingTemplate messagingTemplate; @Override public void sendMessage(String id) { System.out.println("待发送短信的订单已纳入处理队列,id: " + id); messagingTemplate.convertAndSend("order.queue.id",id); } @Override public String doMessage() { String id = messagingTemplate.receiveAndConvert("order.queue.id",String.class); System.out.println("已完成短信发送业务,id: " + id); return id; } }
接下来是实现一旦发送消息,立即处理(监听器):
@Component public class MessageListener { @JmsListener(destination = "order.queue.id") //监听器,当消息传入服务器之后立马会被消费 @SendTo("order.other.queue.id") //监听消费后再发送到order.other.queue.id这个区域,返回的是当前方法的返回值 public String receive(String id){ System.out.println("已完成短信发送业务,id: " + id); return id; } }
欢迎大家一起来学习,有不足的地方还请指出。