springboot整合activemq完整示例
项目:
maven里添加依赖:
<!--activemq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
生产者:
@Service("producer") public class Producer { @Autowired JmsMessagingTemplate jmsTemplate; /** * 发送消息 * * @param destination 发送到的队列名 * @param message 消息体 */ public void sendMessage(Destination destination, final String message) { jmsTemplate.convertAndSend(destination, message); }
消费者:可选两种模式
1.已知queue名:
@JmsListener(destination = "") //queue名 public void receiveQueue(String txt) { System.out.println("receive:" + txt); }
@JmsListener(destination = "test.queue") @SendTo("") //转发 public String receiveQueue2(String txt) { System.out.println("receive2:" + txt); return "return message" + txt; }
2.不知名:
@Component public class QueueMessageListner implements MessageListener { @Override public void onMessage(Message message) { try { ActiveMQDestination queues = (ActiveMQDestination) message.getJMSDestination(); if (queues.getPhysicalName().equals("q1")) { //“q1”为queue名 System.out.println(message.toString()); } System.out.println(message.toString()); } catch (JMSException e) { e.printStackTrace(); } } }
然后,本机上可以下载安装activemq:
安装包可以网上下,然后解压到本地,找到conf-activemq.xml,修改这部分:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
将0.0.0.0---->127.0.0.1
启动:
找到本机匹配位数的目录,启动activemq.bat脚本
springboot对应的配置文件添加:
#activemq
spring.activemq.broker-url=tcp://127.0.0.1:61616
然后,写两个类,模拟生产和消费。
进页面:
默认账户和密码都是admin