欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

ActiveMQ5.0實戰(zhàn)三:使用Spring發(fā)送,消費topic和

系統(tǒng) 2058 0
ActiveMQ5.0實戰(zhàn)一: 安裝配置ActiveMQ5.0
ActiveMQ5.0實戰(zhàn)二: 基本配置

簡介

實戰(zhàn)一 , 實戰(zhàn)二 介紹了ActiveMQ的基本概念和配置方式.

本篇將通過一個實例介紹使用spring發(fā)送,消費topic, queue類型消息的方法. 不懂topic和queue的google 之.

?

如圖示, TOPIC和QUEUE分別代表一個topic和一個queue消息通道.

  1. TopicMessageProducer向topic發(fā)送消息, TopicConsumerA和TopicConsumerB則從topic消費消息.
  2. QueueMessageProducer向Queue發(fā)送消息, QueueConsumer從Queue中消費消息

Spring整合JMS

就像對orm, web的支持一樣, spring同樣支持jms, 為整合jms到已有的項目提供了很多便利的方法. 本篇主要講實戰(zhàn), 是所以先從配置開始, spring配置jms基本上需要8個部分.

  1. ConnectionFactory. 和jms服務器的連接, 可以是外部的jms server, 也可以使用embedded ActiveMQ Broker.
  2. Destination. 有topic和queue兩種方式.
  3. JmsTemplate. spring提供的jms模板.
  4. MessageConverter. 消息轉換器.
  5. MessageProducer. 消息生產(chǎn)者.
  6. MessageConsumer. 消息消費者.
  7. MessageListener. 消息監(jiān)聽器
  8. MessageListenerContainer. 消息監(jiān)聽容器

下面以實例的方式介紹上面8個部分.

1. ConnectionFactory

    <amq:connectionFactory id="jmsConnectionFactory" brokerURL="vm://localhost" />
  

?brokerURL是指要連接的activeMQ server的地址, activeMQ提供了多種brokerURL, 集體可參見文檔.一般我們使用嵌套的ActiveMQ server. 配置如下, 這個配置使用消息的存儲機制, 服務器重啟也不會丟失消息.

    <!--  embedded ActiveMQ Broker -->
	<amq:broker useJmx="false" persistent="true">
		<amq:persistenceAdapter>
			<amq:amqPersistenceAdapter directory="d:/amq"/>
		</amq:persistenceAdapter>
		<amq:transportConnectors>
			<amq:transportConnector uri="tcp://localhost:61616" />
                       <amq:transportConnector uri="vm://localhost:0" />
		</amq:transportConnectors>
	</amq:broker>
  

?2. Destination

?在實例中我們使用了兩種destination

    <!--  ActiveMQ destinations  -->
<!--  使用topic方式-->
<amq:topic name="TOPIC" physicalName="JMS-TEST-TOPIC" />
<!--  使用Queue方式-->
<amq:queue name="QUEUE" physicalName="JMS-TEST-QUEUE" />
  

?3. JmsTemplate

    <!--  Spring JmsTemplate config -->
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory">
			<!--  lets wrap in a pool to avoid creating a connection per send -->
			<bean class="org.springframework.jms.connection.SingleConnectionFactory">
				<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
			</bean>
		</property>
		<!-- custom MessageConverter -->
		<property name="messageConverter" ref="defaultMessageConverter" />
	</bean>
  

? 4. MessageConverter

?? MessageConverter實現(xiàn)的是org.springframework.jms.support.converter.MessageConverter接口, 提供消息的轉換功能. DefaultMessageConverter的實現(xiàn)見附件.

    <bean id="defaultMessageConverter" class="com.andyao.activemq.DefaultMessageConverter" />
  

? 5. MessageProducer

?? 實例擁有兩個消息生產(chǎn)者, 消息生產(chǎn)者都是POJO, 實現(xiàn)見附件.

    <!-- POJO which send Message uses  Spring JmsTemplate -->
	<bean id="topicMessageProducer" class="com.andyao.activemq.TopicMessageProducer">
		<property name="template" ref="jmsTemplate" />
		<property name="destination" ref="TOPIC" />
	</bean>
	<bean id="queueMessageProducer" class="com.andyao.activemq.QueuMessageProducer">
		<property name="template" ref="jmsTemplate" />
		<property name="destination" ref="QUEUE" />
	</bean>
  

?6. MessageConsumer

?TOPIC通道有兩個消息消費者, QUEUE有一個消息消費者

    <!--  Message Driven POJO (MDP) -->
    <!-- consumer1 for topic a -->
    <bean id="topicConsumerA" class="com.andyao.activemq.TopicConsumerA" />
    <!-- consumer2 for topic a -->
    <bean id="topicConsumerB" class="com.andyao.activemq.TopicConsumerB" />
    <!-- consumer for queue -->
    <bean id="queueConsumer" class="com.andyao.activemq.QueueConsumer" />
  

? 7. MessageListener

每一個消息消費者都對應一個MessageListener

    <bean id="topicListenerA" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
		<constructor-arg ref="topicConsumerA" />
		<!--  may be other method -->
		<property name="defaultListenerMethod" value="receive" />
		<!-- custom MessageConverter define -->
		<property name="messageConverter" ref="defaultMessageConverter" />
	</bean>

	<bean id="topicListenerB" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
		<constructor-arg ref="topicConsumerB" />
		<!--  may be other method -->
		<property name="defaultListenerMethod" value="receive" />
		<!-- custom MessageConverter define -->
		<property name="messageConverter" ref="defaultMessageConverter" />
	</bean>

    <bean id="queueListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
		<constructor-arg ref="queueConsumer" />
		<!--  may be other method -->
		<property name="defaultListenerMethod" value="receive" />
		<!-- custom MessageConverter define -->
		<property name="messageConverter" ref="defaultMessageConverter" />
	</bean>
  

?8. MessageListenerContainer

?有幾個MessageListener既有幾個MessageListenerContainer

    <bean id="topicListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="jmsConnectionFactory" />
		<property name="destination" ref="TOPIC" />
		<property name="messageListener" ref="topicListenerA" />
	</bean>

    <bean id="topicListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="jmsConnectionFactory" />
		<property name="destination" ref="TOPIC" />
		<property name="messageListener" ref="topicListenerB" />
	</bean>
    
    <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="jmsConnectionFactory" />
		<property name="destination" ref="QUEUE" />
		<property name="messageListener" ref="queueListener" />
	</bean>
  

? Summary

寫spring配置文件的時候, 要把MessageProducer, MessageConsumer,MessageListener,MessageListenerContainer幾個地方弄清楚:

  1. 可以有一個或者多個消息生產(chǎn)者向同一個destination發(fā)送消息.
  2. queue類型的只能有一個消息消費者.
  3. topic類型的可以有多個消息消費者.
  4. 每個消費者對應一個MessageListener和一個MessageListenerContainer.

?

?

?

?

ActiveMQ5.0實戰(zhàn)三:使用Spring發(fā)送,消費topic和queue消息


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 丁香亚洲 | 亚洲男人天堂2021 | 国产精品香蕉一区二区三区 | 香蕉久久夜色精品国产小优 | 国产亚洲精品久久精品录音 | 色客成人网 | 精品视频在线观看视频免费视频 | 久久亚洲最大成人网4438 | 国产熟妇无码A片AAA毛片视频 | 国产成人精品日本亚洲11 | 国产午夜高清 | 日韩中文有码高清 | 久久伊人一区二区三区四区 | 欧美成人精品二区三区99精品 | 欧美激情视频二区三区 | 亚洲午夜视频在线观看 | 日本又黄又粗暴的gif动态图含羞 | 99热这里有精品 | 日本一区二区三区免费观看 | 91看片淫黄大片一级在线观看 | 国产成人午夜精品5599 | 亚洲欧洲视频在线观看 | 草莓福利视频 | 久久97精品久久久久久久看片 | 欧美人成在线视频 | 午夜婷婷精品午夜无码A片影院 | 国产成人高清视频 | 黄色av网站在线免费观看 | 亚洲AV成人天堂影院 | 久久亚洲精品国产亚洲老地址 | 精品视频| 污视频在线观看网站 | 亚洲资源在线 | 玖草在线播放 | 激情福利视频 | 久久影院在线观看 | 国产精品一区久久 | 欧美一区精品 | 久久一二三区 | www天天操 | 国产美女一区二区三区 |