标签:jms sage target wired lse map ref cti cal
生产者代码
1 @Component("queueSender") 2 public class QueueSender { 3 4 @Autowired 5 @Qualifier("jmsQueueTemplate") 6 private JmsTemplate jmsTemplate;// 通过@Qualifier修饰符来注入对应的bean 7 8 /** 9 * 发送一条消息到指定的队列(目标) 10 * 11 * @param queueName 12 * 队列名称 13 * @param message 14 * 消息内容 15 */ 16 public void send(String queueName, final String message) { 17 jmsTemplate.send(queueName, new MessageCreator() { 18 public Message createMessage(Session session) throws JMSException { 19 return session.createTextMessage(message); 20 } 21 }); 22 } 23 24 public void send(String queueName, final Map<String, String> map) { 25 jmsTemplate.send(queueName, new MessageCreator() { 26 public Message createMessage(Session session) throws JMSException { 27 MapMessage message = session.createMapMessage(); 28 for (String key : map.keySet()) { 29 message.setString(key, map.get(key)); 30 } 31 return message; 32 } 33 }); 34 } 35 36 }
生产者配置
1 <!-- 获取ActiveMQ提供的ConnectionFactory --> 2 <!--设置ActiveMQ服务器地址及端口--> 3 <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码--> 4 <amq:connectionFactory id="amqConnectionFactory" 5 brokerURL="tcp://localhost:61616" userName="admin" password="admin" /> 6 7 <!-- 配置ActiveMQ服务器连接conneciotnFactory --> 8 <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> 9 <!-- 将ActiveMQ提供的ConnectionFactory注入到Spring管理的connectionFactory中 --> 10 <property name="targetConnectionFactory" ref="amqConnectionFactory"></property> 11 <!-- 同上,同理 --> 12 <!-- <constructor-arg ref="amqConnectionFactory" /> --> 13 <!-- 设置缓存大小 --> 14 <property name="sessionCacheSize" value="100" /> 15 </bean> 16 17 <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> 18 <!-- 定义JmsTemplate的Queue类型 --> 19 <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate"> 20 <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> 21 <constructor-arg ref="connectionFactory" /> 22 <!-- 非pub/sub模型(发布/订阅),即队列模式 --> 23 <property name="pubSubDomain" value="false" /> 24 </bean> 25 26 <!-- 定义JmsTemplate的Topic类型 --> 27 <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate"> 28 <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> 29 <constructor-arg ref="connectionFactory" /> 30 <!-- pub/sub模型(发布/订阅) --> 31 <property name="pubSubDomain" value="true" /> 32 </bean>
消费者代码
1 @Component 2 public class QueueReceiver1 implements MessageListener { 3 4 public void onMessage(Message message) { 5 try { 6 System.out.println("QueueReceiver1接收到消息:" + ((TextMessage) message).getText()); 7 } catch (JMSException e) { 8 e.printStackTrace(); 9 } 10 } 11 }
消费者配置
1 <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto"> 2 <jms:listener destination="test.queue" ref="queueReceiver1"/> 3 </jms:listener-container>
标签:jms sage target wired lse map ref cti cal
原文地址:https://www.cnblogs.com/flz-0429/p/9879938.html