日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

aws sqs_在Spring使用AWS SQS创建消息驱动Bean

發布時間:2023/12/3 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aws sqs_在Spring使用AWS SQS创建消息驱动Bean 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

aws sqs

在我之前的文章中,我展示了一個簡單的示例,該示例如何將AWS SQS與Spring Framework結合使用以將消息放入隊列并從隊列中讀取消息。 在本文中,我將更進一步,并使用Spring創建一個“消息驅動的Bean”,以便對放入隊列中的每個消息都進行“自動”處理。 AWS在其文檔頁面上將其稱為異步方式。 要做到這一點,我將在Spring中定義一個MessageListener并將其配置為描述來聽我的隊列在這里 。 要查看初始項目設置,請參閱我的前一篇文章,因為在此不再贅述。

Spring應用程序上下文將定義消息偵聽器(和相應的對象),如下所示:

<bean id="amazonMessageListener" class="net.pascalalma.aws.sqs.SpringMessageDrivenBean" /><bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"><property name="delegate" ref="amazonMessageListener"/><property name="defaultListenerMethod" value="onMessage"/><property name="messageConverter"><null/></property></bean><bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory"/><property name="destinationName" ref="queueName" /><property name="messageListener" ref="messageListener" /></bean>

首先,我定義了我的MDB(MessageDrivenBean)bean,并將其稱為“ amazonMessageListener”。 接下來,我將此MDB用作“ messageListener”適配器的“代理”。 這個“適配器” bean還可以負責轉換消息有效負載(在此忽略)并在委托的偵聽器中調用正確的方法。

在'jmsContainer'bean中,'adapter'與使用的JMS連接Factory和目標鏈接在一起。

剩下的就是MDB本身的源代碼:

package net.pascalalma.aws.sqs;import org.apache.log4j.Logger; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.TextMessage;public class SpringMessageDrivenBean {final static Logger logger = Logger.getLogger(SpringMessageDrivenBean.class);public void onMessage(Message message) {if (message instanceof TextMessage) {try {logger.info(String.format("MDB received: %s ", ((TextMessage) message).getText()));}catch (JMSException ex) {throw new RuntimeException(ex);}}else {throw new IllegalArgumentException("Message must be of type TextMessage");}} }

我認為這非常簡單。 對于每個放入隊列的消息,都會調用方法“ onMessage”,在這種情況下,它僅打印消息的文本內容。 為了查看它的工作原理,我使用以下“主”類:

package net.pascalalma.aws.sqs;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringMdbMain {public static void main(String[] args) {//Build application context by reading spring-config.xmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"application-context.xml"});//Get an instance of ProviderService class;MyMessageProvider prdSvc = (MyMessageProvider) ctx.getBean("myMessageProviderService");//Call getProduct method of ProductServiceprdSvc.sendMessage("This is a test A");prdSvc.sendMessage("This is a test B");prdSvc.sendMessage("This is a test C");prdSvc.sendMessage("This is a test D");} }

結果為以下輸出:

2015-04-11 13:17:20 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(23) - Sending message with txt: This is a test A 2015-04-11 13:17:26 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(36) - Message sent 2015-04-11 13:17:26 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(23) - Sending message with txt: This is a test B 2015-04-11 13:17:26 INFO net.pascalalma.aws.sqs.SpringMessageDrivenBean(16) - MDB received: This is a test A 2015-04-11 13:17:26 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(36) - Message sent 2015-04-11 13:17:26 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(23) - Sending message with txt: This is a test C 2015-04-11 13:17:26 INFO net.pascalalma.aws.sqs.SpringMessageDrivenBean(16) - MDB received: This is a test B 2015-04-11 13:17:27 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(36) - Message sent 2015-04-11 13:17:27 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(23) - Sending message with txt: This is a test D 2015-04-11 13:17:27 INFO net.pascalalma.aws.sqs.SpringMessageDrivenBean(16) - MDB received: This is a test C 2015-04-11 13:17:27 DEBUG net.pascalalma.aws.sqs.MyMessageProvider(36) - Message sent 2015-04-11 13:17:27 INFO net.pascalalma.aws.sqs.SpringMessageDrivenBean(16) - MDB received: This is a test D

翻譯自: https://www.javacodegeeks.com/2015/05/creating-a-message-driven-bean-with-aws-sqs-in-spring.html

aws sqs

總結

以上是生活随笔為你收集整理的aws sqs_在Spring使用AWS SQS创建消息驱动Bean的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。