Spring Framework 5.1.8.RELEASE APIhtml
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.3.18.RELEASE</version> </dependency>
<!--JMS配置--> <!--Activemq的鏈接工廠--> <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://127.0.0.1:61616" /> </bean> <!--spring-jms對Activemq的鏈接工廠進行封裝--> <bean id="JMSconnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory" ref="targetConnectionFactory" /> </bean> <!--消息目的地(隊列模式)--> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="SpringActiveMQMsg"/> </bean> <!--消息目的地(主題模式)--> <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="SpringActiveMQMsgTopic"/> </bean> <!--jms模板,用於進行消息發送--> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="JMSconnectionFactory"/> </bean> <!--配置消息監聽器--> <bean id="consumerMessageListener" class="com.scheduleserver.Listener.MyMessageListener"/> <!--配置消息容器--> <bean id ="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <!--配置鏈接工廠--> <property name="connectionFactory" ref="JMSconnectionFactory"/> <!--配置監聽的目的地--> <property name="destination" ref="queueDestination"/> <!--配置消息監聽器--> <property name="messageListener" ref="consumerMessageListener"/> </bean>
@Autowired private JmsTemplate jmsTemplate; // 可能存在多個目的地,因此用按名稱注入 @Resource(name = "queueDestination") private Destination destination; @PostMapping("/test") public ResponseObject test(@RequestParam String msg) { jmsTemplate.send(destination , new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage textMessage = session.createTextMessage(msg); return textMessage; } }); System.out.println("費哥愛你哦: " + msg); return ResponseObject.generateSuccessResponse(); }
package com.scheduleserver.Listener; import javax.jms.JMSException; import javax.jms.MessageListener; import javax.jms.TextMessage; public class MyMessageListener implements MessageListener { @Override public void onMessage(javax.jms.Message message) { TextMessage tmes = (TextMessage) message; try { System.out.println(tmes.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
控制檯輸出:
費哥愛你哦: 自律使我自由!
自律使我自由!java
若想按主題發送消息,生產者和消費者的目標地址換成主題目標地址就好了。spring