spring整合activemq傳送MQ訊息[queue模式]例項
queue型別訊息
pom依賴
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.11.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.4.RELEASE</version> </dependency>
1、配置檔案
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置JMS連線工廠 --> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="failover:(tcp://192.168.147.131:61616)" /> </bean> <!-- 定義訊息佇列(Queue) --> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <!-- 設定訊息佇列的名字 --> <constructor-arg> <value>testSpringQueue</value> </constructor-arg> </bean> <!-- 配置JMS模板(Queue),Spring提供的JMS工具類,它傳送、接收訊息。 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory" /> <property name="defaultDestination" ref="queueDestination" /> <property name="receiveTimeout" value="10000" /> </bean> </beans>
2、生產者程式碼
package com.mq.spring.queue; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import javax.jms.*; /** * created on 2015/6/4 * @author [email protected] * @version 1.0 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring-mq-queue.xml"}) public class QueueSender { @Resource private JmsTemplate jmsTemplate; @Test public void send(){ sendMqMessage(null,"spring activemq queue type message !"); } /** * 說明:傳送的時候如果這裡沒有顯示的指定destination.將用spring xml中配置的destination * @param destination * @param message */ public void sendMqMessage(Destination destination, final String message){ if(null == destination){ destination = jmsTemplate.getDefaultDestination(); } jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage(message); } }); System.out.println("spring send message..."); } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } }
3、消費者程式碼
package com.mq.spring.queue; import org.junit.Test; import javax.jms.*; import org.junit.runner.RunWith; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import javax.jms.Message; /** * created on 2015/6/4 * @author [email protected] * @version 1.0 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring-mq-queue.xml"}) public class QueueReceiver { @Resource private JmsTemplate jmsTemplate; @Test public void receiveMqMessage(){ Destination destination = jmsTemplate.getDefaultDestination(); receive(destination); } /** * 接受訊息 */ public void receive(Destination destination) { TextMessage tm = (TextMessage) jmsTemplate.receive(destination); try { System.out.println("從佇列" + destination.toString() + "收到了訊息:\t" + tm.getText()); } catch (JMSException e) { e.printStackTrace(); } } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } }
程式執行結果:
說明:上面的生產者和消費者使用同一套配置檔案,使用獨立的程式去接收訊息,spring jms也提供了訊息監聽處理.接下來我們換成監聽式消費
配置檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置JMS連線工廠 --> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="failover:(tcp://192.168.147.131:61616)" /> </bean> <!-- 定義訊息佇列(Queue) --> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <!-- 設定訊息佇列的名字 --> <constructor-arg> <value>testSpringQueue</value> </constructor-arg> </bean> <!-- 配置訊息佇列監聽者(Queue) --> <bean id="consumerMessageListener" class="com.mq.spring.queue.ConsumerMessageListener" /> <!-- 訊息監聽容器(Queue),配置連線工廠,監聽的佇列是testSpringQueue,監聽器是上面定義的監聽器 --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="queueDestination" /> <property name="messageListener" ref="consumerMessageListener" /> </bean> </beans>
這樣我們的訊息消費就可以在監聽器中處理消費了.生產的程式碼不變,修改傳送者的訊息體內容,執行生產程式.可以看到執行效果如下:
相關推薦
spring整合activemq傳送MQ訊息[queue模式]例項
queue型別訊息 pom依賴 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>
spring整合activemq傳送MQ訊息[Topic模式]例項
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc
SPRING 整合 activemq 的 topic 模式
概要 activemq 支援兩種模式: 1.佇列模式 2. 釋出訂閱者模式,topic有一個主題可以有多個訂閱者。這種情況可以將一個訊息,分發到多個消費者。 實現程式碼 1.生產者 import java.util.Map; import javax.annotation.Resour
SPRING 整合 KAFKA 傳送訊息
準備工作 1.安裝kafka+zookeeper環境 2.利用命令建立好topic,建立一個topic my-topic 整合步驟 1.配置生產者 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=
IBM MQ 整合CXF 傳送JMS 訊息
1.修改wsdl 協議型別為 jms 替換 <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 為 <soap:binding style="document" t
Spring整合activeMq(一):點對點模式
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.spring
spring 整合 activeMQ非同步傳送郵件
一、訊息佇列的作用 1、非同步處理 2、流量削峰 3、應用解耦 4、日誌處理 二、此處展示的是非同步處理場景 1、構建maven專案,此處不做多餘的說明了,匯入MQ相關的jar包,注意版本的問題,這裡費了好多時間解決衝突 <!-- MQ start--&
解決Springboot整合ActiveMQ傳送和接收topic訊息的問題
環境搭建 1.建立maven專案(jar) 2.pom.xml新增依賴 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo
Spring整合activeMQ消息隊列
else finally ant try 工具類 cal 創建 ransac cer 1.配置JMS <!-- Spring提供的JMS工具類,它可以進行消息發送、接收等 --> <bean id="jmsTemplate" class=
SpringBoot2.0之整合ActiveMQ(點對點模式)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/
activemq+springboot,topic+queue模式
一.maven中新增activemq依賴: <!-- activemq --> <dependency>
spring整合activemq傳遞物件注意事項
初衷:兩個專案分別部署在兩臺伺服器上,專案之間以activemq傳遞object訊息 拓樸結構: 伺服器A:tomcat,專案A--生產者 伺服器B:tomcat、activemq、專案B--消費者 專案A主要程式碼 src/main/resources/ActiveMQ
淺談jms之(通過spring整合activeMQ實現jms)例項
上篇說到使用activemq 實現jms訊息服務 的例項,但是那個是沒有spring進行整合和管理的;其實spring完整提供對jms的支援,所以我們可以通過spring來管理整合activemq 實現jms訊息傳遞服務。 1.建立maven工程(我的專案都是通過maven
spring整合activemq衝突問題
由於版本比較高的activemq-all的jar包中包含了spring的一些包,這會引起包的衝突 <dependency> <groupId>org.apache.activemq</groupId> <artifact
SpringBoot2整合ActiveMQ實戰之釋出訂閱模式
1、預設消費者並不會消費訂閱釋出型別的訊息,這是由於springboot預設採用的是p2p模式進行訊息的監聽 在配置檔案裡面,註釋掉 #spring.jms.pub-sub-domain=true 2. //需要給topi
Spring整合ActiveMQ教程
寫在前面:這篇文章會涉及二者的整合思路,為了能夠更好地讀懂本文,建議最好你能夠在不整合其他環境的情況下使用ActiveMQ編寫簡單的控制檯Demo,並且能夠了解JMS(Java Message Service)。當然,你也可以直接略過整合思路看整合的過程。 簡介 A
ActiveMQ學習(四)Spring整合ActiveMQ
因為2018年的第一場雪,比以往時候來的更晚一些,所以,本篇文章隔了近5個月才更新,抱歉來的有點晚了各位,不是人造革,皮是真的皮,啊彌陀佛,罪過罪過……本篇,將繼續跟隨以往的腳步,使用Spring MVC+ActiveMQ+Maven+Tomcat,做一個
使用spring整合的kafka收發訊息
1. 引入maven依賴 <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-kaf
spring整合rabbitMq(基於topic和fanout模式)
本文程式碼樣例都是在spring整合環境下寫的,都測試通過。 pom檔案需要加入spring整合rabbitMq的依賴: <dependency> <groupId>org.springframework
Spring整合ActiveMQ(topic 詳細配置步驟)
maven工程新增依賴<dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId>