最近項(xiàng)目中用到了消息中間件,拿到任務(wù)后,各種百度各種學(xué)習(xí),現(xiàn)將學(xué)習(xí)的一個(gè)小成果記錄一下。
環(huán)境:
windows環(huán)境下: Spring 3.2.8 、Tomcat 7 、JDK 1.6 、 ActiveMQ 5.9.0
項(xiàng)目目錄結(jié)構(gòu):
applicationContext.xml
- <!--創(chuàng)建連接工廠 -->
- <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL" value="tcp://localhost:61616"></property>
- </bean>
-
-
- <!-- 聲明ActiveMQ消息目標(biāo),目標(biāo)可以是一個(gè)隊(duì)列,也可以是一個(gè)主題ActiveMQTopic -->
- <bean id="destinationOne" class="org.apache.activemq.command.ActiveMQQueue">
- <constructor-arg index="0" value="testQueOne"></constructor-arg>
- </bean>
-
-
- <!-- 設(shè)置 消息目的地 start -->
- <bean id="jmsTemplateOne" class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory" ref="connectionFactory"></property>
- <property name="defaultDestination" ref="destinationOne"></property>
- <property name="receiveTimeout" value="6000"></property>
- </bean>
- <!-- 設(shè)置 消息目的地 end -->
-
- <!-- 配置生產(chǎn)者 start -->
- <bean id="senderOne" class="com.dly.avtivemqtest.SenderOne">
- <property name="jmsTemplateOne" ref="jmsTemplateOne"></property>
- </bean>
- <!-- 配置生產(chǎn)者 end -->
-
- <!-- 配置消費(fèi)者 start -->
- <bean id="receiverOne" class="com.dly.avtivemqtest.ReceiverOne">
- <!-- <property name="jmsTemplate" ref="jmsTemplate"></property> -->
- </bean>
- <!-- 配置消費(fèi)者 end -->
-
- <!-- 消息監(jiān)聽(tīng)器 -->
- <bean id="consumerMessageListenerOfOne" class="com.dly.avtivemqtest.ReceiverOne" />
-
- <!-- 消息監(jiān)聽(tīng)容器 消息接收監(jiān)聽(tīng)器用于異步接收消息 -->
- <bean id="jmsContainerOne" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="connectionFactory" />
- <property name="destination" ref="destinationOne" />
- <property name="messageListener" ref="consumerMessageListenerOfOne" />
- </bean>
- lt;/beans>
SenderOne.java- public class SenderOne {
- private JmsTemplate jmsTemplateOne;
-
- public JmsTemplate getJmsTemplateOne() {
- return jmsTemplateOne;
- }
-
- public void setJmsTemplateOne(JmsTemplate jmsTemplateOne) {
- this.jmsTemplateOne = jmsTemplateOne;
- }
-
- //測(cè)試的
- public void sendInfo(final String messageRecord,final String flag) {
- jmsTemplateOne.send(new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- TextMessage message = session.createTextMessage();
- return message;
- }
- });
- }
- }
ReceiverOne.java- public class ReceiverOne implements MessageListener {
- //測(cè)試方法
- public void onMessage(Message message, Session session) {
-
- //這里我們知道生產(chǎn)者發(fā)送的就是一個(gè)純文本消息,所以這里可以直接進(jìn)行強(qiáng)制轉(zhuǎn)換
- TextMessage textMsg = (TextMessage) message;
- try {
- String endStr = textMsg.getText();
- Integer endInt = Integer.parseInt(endStr);
- System.out.println("消息:==="+endInt);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("異常信息是:===:" + e.getMessage());
- }
- }
-
- }
JMSTest.java- public class JMSTest {
- public static void main(String[] args) {
-
- ApplicationContext context = new ClassPathXmlApplicationContext("resources/applicationContext.xml");
- SenderOne sender = (SenderOne) context.getBean("senderOne");
- sender.sendInfo("10","2");
- }
- }
運(yùn)行JMSTest的結(jié)果:
看到控制臺(tái)答應(yīng)出來(lái)的 2 ,就說(shuō)明 這個(gè)消息是發(fā)送成功 并且能,成功接收的,說(shuō)明我們的topic消息的發(fā)送與接收是成功的。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。