Springboot整合ActiveMQ实现消息队列的过程浅析
零维展开智子 人气:0确保你启动了自己电脑的activemq。
pom中导入坐标
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
书写yml配置
spring:
activemq:
broker-url: tcp://localhost:61616
jms:
template:
default-destination: my #消息队列的默认名字
pub-sub-domain: false #是否开启消息订阅模式
业务层代码
@Service public class MessageServiceActive implements MessageService { @Autowired private JmsMessagingTemplate template; @Override public void getMessage(String id) { template.convertAndSend("AA",id); //自定义消息队列名字 System.out.println("待发送短信的订单已纳入处理队列,id:"+id); } @Override public String doMessage() { String id=template.receiveAndConvert("AA",String.class); return id; }
此时,你书写控制层代码就可以实现消息队列了,不过有一个缺陷,那就是处理消息的时候必须手动书写网址,调用执行对应的方法才可以,不过我们可以通过监听器来实现自动化,就是一旦有消息产生就会立即处理。
监听器代码
@Component public class MessageListener { @Autowired private JmsMessagingTemplate template; @JmsListener(destination = "AA") //要监听的消息队列名称 @SendTo(value = "BB") //自动化处理完,还可以把该消息传递给下一了消息队列 public String receive(){ String id=template.receiveAndConvert("AA",String.class); System.out.println("已完成短信发送业务,id:"+id+"\n"); return "new_"+id; //利用返回值转发给下一个 } }
业务层代码
@Service public class MessageServiceActive implements MessageService { @Autowired private JmsMessagingTemplate template; @Override public void getMessage(String id) { template.convertAndSend("AA",id); System.out.println("待发送短信的订单已纳入处理队列,id:"+id); } }
这样我们的消息就可以流水线似的处理了,这是点对点的消息队列方式,还有订阅式的。
加载全部内容