消息生成器组件具有以下功能:
session = connection.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
producer = session.createProducer(session.createQueue(queueName));
我使用AWS SQS异步发送消息
我假设消息将在队列中,直到它被显式确认。(因为客户端确认模式)
然而,它被从队列中移除。
消息消费者组件:
我已经编写了一个异步消费者来从队列中提取消息。这是Spring配置文件;
<bean id="ConnectionFactoryBuilder"
class="com.amazon.sqs.javamessaging.SQSConnectionFactory$Builder">
<property name="regionName" value="us-east-1" />
<property name="numberOfMessagesToPrefetch" value="1" />
<property name="awsCredentialsProvider" ref="CredentialsProviderBean" />
</bean>
<bean id="ConnectionFactory" class="com.amazon.sqs.javamessaging.SQSConnectionFactory"
factory-bean="ConnectionFactoryBuilder" factory-method="build" />
<bean id="Connection" class="javax.jms.Connection" factory-bean="ConnectionFactory"
factory-method="createConnection" init-method="start" destroy-method="close" />
<bean id="QueueName" class="java.lang.String">
<constructor-arg value="${sqs.queueName}" />
</bean>
<bean id="amazonMessageListener" class="com.myapp.AsyncMessageListener" />
<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" />
<property name="sessionAcknowledgeMode" value="2"/>
</bean>
我使用sessionAcknowledgeMode属性为我的消费者配置了客户端acknowledgemode。但消息仍然会从队列中删除,而消费者不会使用消息明确确认。承认
根据AbstractMessageListenerContainer(DefaultMessageListenerContainer的超类)文档:
“sessionAcknowledgeMode”设置为“CLIENT_ACKNOWLEDGE”:侦听器成功执行后自动确认消息;在抛出用户异常以及其他侦听器执行中断(例如JVM死机)的情况下,尽最大努力重新交付。
因此,在使用DefaultMessageListenerContainer时,如果侦听器中的onMessage()方法无一例外地返回,Spring会自动确认消息。
本文向大家介绍Apache Kafka和JMS之间的区别。,包括了Apache Kafka和JMS之间的区别。的使用技巧和注意事项,需要的朋友参考一下 Kafka和JMS都是消息传递系统。Java消息服务是Java提供的api。它用于在您的应用程序中实现消息传递系统。JMS支持队列和发布者/订阅者(主题)消息传递系统。使用队列,当第一个使用者使用一条消息时,该消息将从队列中删除,其他人无法再使用它
问题内容: 我很惊讶地发现 和 对全球成员产生了不同的影响。我想确认我的实验是正确的行为。 在第一个示例中,更改foo模块中的成员将反映在所有导入foo的代码中。但是,在以后的情况下更改该成员似乎仅影响导入该成员的文件。换句话说,使用后一种方法将为每个导入文件提供其自己的foo成员副本。 我想要的行为是可以从所有文件访问foo.x,可以从所有文件更改它,并在所有文件中反映该更改(如果愿意,则为真正
问题内容: 策略模式和命令模式有什么区别?我也在寻找Java中的一些示例。 问题答案: 通常,命令模式用于使对象脱离 需要完成的工作 -进行操作及其参数并将其包装在要记录的对象中,以备撤消,发送到远程站点等。随着时间的流逝,它们将往往是大量不同的Command对象,它们会通过系统中的给定点,并且Command对象将包含描述所需操作的各种参数。 另一方面,策略模式用于指定应 该如何做 ,并插入到较大
本文向大家介绍浏览器标准模式和怪异模式之间的区别是什么?相关面试题,主要包含被问及浏览器标准模式和怪异模式之间的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 这是个历史遗留问题,W3C标准推出前,旧的页面都是根据旧的渲染方式对页面进行渲染的,因此在W3C标准推出后为了保证旧页面的正常显示,保持浏览器的兼容性,这样浏览器上就产生了能够兼容W3C标准渲染的严格模式和保证旧页面显示的怪异模式的
问题内容: 装饰器模式和委托模式(如果有)之间有什么区别?我不仅想了解实现细节,还不想了解用例差异和如何使用它们的主观观点。 装饰图案 委托模式 编辑: 您能否指向使用这些模式的OS源代码(在OS项目中)(尤其是委托,因为在Java IO类中使用了装饰)。我正在寻找一些实际用法,而不仅仅是虚拟示例。也许这些模式是相同的,只是标题不同。随时写这个意见。 问题答案: 装饰器使用委派,但使用一种非常特定
本文向大家介绍SQL Server中Star模式和Snowflake模式之间的区别,包括了SQL Server中Star模式和Snowflake模式之间的区别的使用技巧和注意事项,需要的朋友参考一下 星型图式是关系式图式,它遵循事实和维度的概念。事实表用于存储事件,例如登录,维度 表用于存储分区事件的参考数据。在星型模式中,由于此查询的执行时间非常快,因此表被完全非规范化。 雪花化是一种规范STA