- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我有一个需要顺序处理的消息队列。现在,此处理涉及调用Web服务(有时可能会关闭),因此我必须使消息检索具有事务性。据我所知,当中途有任何异常时,整个交易都会回滚,消息不会丢失吗?
但是,还需要消息使用者具有高可用性,因此我在队列中有两个侦听器实例。现在,事务将确保在第一个消息完全处理完第一个消息之前,侦听器的另一个实例不会检索到第二个消息吗?还是我需要做更多的事情来确保在完全处理之前,没有消息从队列中发送出去。
如果需要任何其他配置,是在MQ中还是在侦听器中?
我正在使用websphere mq作为消息代理和spring集成来检索消息。谢谢您的帮助。
编辑:
对于 token 而言,首先要考虑的是队列管理器本身的高可用性。持有此 token 的队列必须是某个队列管理器的一部分。现在,如果我们进行了故障转移,该控制队列将不再可访问。这有点意味着在发生故障转移时,我们需要准备另一个控制队列。
但是,在正常操作期间,我们不能让监听器监听该DR控制队列。 (假设我们有一种机制可以确保“数据”队列得到完美复制)。侦听器实例应知道故障转移已启动,以便它可以在正常操作期间停止侦听控制队列并切换到辅助节点。我不能仅使用侦听器实例来做到这一点。将消息放入队列中的实际生产者将必须通知侦听器实例,以停止侦听正常的ops控制队列并切换到辅助侦听器。如果存在任何中间连接问题(并且普通的ops队列管理器并没有真正关闭),这将有些棘手,但这太过分了。
在控制队列的高可用性得到照顾的情况下,我们有点像在低负载情况下不可共享的问题。现在,我们的负载偶尔会出现峰值,但会有低迷时期。 (晚上和东西)。这个 token 系统真的不是反应性的吧?这更多是周期性的事情。假设我们几个小时都没有收到任何消息。侦听器仍将不断检查队列,因为 token 消息不断触发另一个实例。哪个或多或少实际上使它成为了一个轮询器。我还可以有多个侦听器实例,每个实例在每小时的不同时间进行轮询,对吗?它本身并不是事件驱动的。
第三,实际上是插入 token 消息的问题。在首次安装或故障回复期间,我们将获得手动插入此 token 的额外手动步骤(因为该 token 有时会在故障转移中丢失)。我们真的不能让其中一个侦听器实例执行此操作,因为如果侦听器实例找不到消息,则有点意思是其他侦听器实例具有 token 。因此,此逻辑必须分开。而且,如果我们实际上在此 token 消息中添加了一些有意义的信息,则它必须是必须被触发的实用程序,而不是通过UI插入的实用程序。
我猜第一个和第三个并不是真正的问题,但是只是额外的开销,如果我们要进行轮询器实现,则将不需要这些开销。第二个是最让我困扰的事情。
最佳答案
您需要传递 token 。运作方式如下:
首先,创建第二个队列并将单个消息放入其中。现在,使用以下逻辑启动每个程序。
FAIL_IF_QUIESCING
选项在同步点下的 token 队列中获取 token 消息。 GET
取决于 token 队列之外的成功
GET
,因此将严格按顺序处理所有应用程序消息。
GET
放在堆栈顶部。如果您有3个或更多侦听实例,则只有前两个机会看到任何流量。
COMMIT
调用将失败。在这种情况下,事务将回滚,并且相同的消息将再次变为可用。如果您使用的是一阶段提交,而不是XA,则对该消息的处理将不会回滚。
STOP CHANNEL
命令即可。
关于java - JMS事务如何与并发使用者一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637289/
我正在读这个 question和 corresponding answer并被答案第一行中的术语 JMS broker 弄糊涂了: MS (ActiveMQ is a JMS broker imple
我正在学习 API 中的 Reactive Streams,我对它与 JMS 之间的相似性感到震惊。在 JMS 中,我们也有异步处理、发布者和订阅者。我在进行这种等效时缺少什么观点? 最佳答案 Rea
假设生产者向 JMS 主题“新闻”发送一条消息。消费者 1 读取了消息,但消费者 2 处于离线状态,因此他还没有读取消息。 是否有任何内置(针对规范或实现)的方式来通知生产者消费者 1 已阅读他的消息
目前我正在开发一个 JMS 应用程序。但我使用普通的 JMS API 和属性文件进行配置。我的应用程序在 Weblogic 中运行并连接到我客户端的 MQ 系列服务器。 最近我知道我可以使用 Webl
我正在尝试使用 Solace 中可用的异步发送功能,但我打算使用 JMS 进行抽象,而不是直接使用 JCSMP 使用它。 JMS 2.0 支持异步发送以及其他新功能:http://www.oracle
我无法获得 javax.jms.ConnectionFactory注入(inject)我的独立 JMS 客户端。 我得到一个 java.lang.NullPointerException在 conne
保持 JMS 连接/ session /消费者始终打开是一种不好的做法吗? 代码草稿示例: // app startup code ConnectionFactory cf = (Connection
我有几个作业,每个作业都有多条消息排队。每个作业的消息随机交错。如果用户决定取消作业,我想从队列中删除属于该作业的所有消息。我已经能够使用 browse() 找到所有要删除的消息,但一直无法弄清楚如何
是否可以将主题配置为仅存储最后一条消息的副本并将其发送到新连接而不知道客户端标识符或其他信息? 更新: 从 Shashi 提供的信息中,我发现这两页使用 retroactive consumer 描述
目前正在使用 WebLogic 和分布式队列。我从文档中了解到,分布式队列允许您使用全局 JNDI 名称检索到集群中任何队列的连接。分布式队列为您提供的主要功能之一似乎是跨多个托管服务器的负载平衡连接
再见,我的基本要求是有一个可以发送消息的路由,并将其放在 JMS 队列中。 camel 上下文在 JavaEE 6 容器中运行,即 JBoss AS 7.1.1,因此它是 HornetQ for JM
我正在阅读 JMS 2.0 规范,其中提到(相关摘录下方)如果客户端尝试修改 Message 对象,则 JMS 提供程序可能会抛出异常。 我的问题是 JMS 提供者如何知道客户端是否试图修改 Mess
我的 spring 上下文文件中有以下设置。 "PowerEventQueue" “${
我正在尝试使用 JSP 连接到 ActiveMQ。但是,当我运行该程序时,它给了我以下类型的异常: NoClassDefFoundError: javax/jms/Destination . 我不确定
我刚看了CORBA和JMS,他们好像都是用来实现的代理架构/模式。 我对他们有几个问题 1.他们之间的区别我还不是很清楚,谁能解释一下? 2.CORBA 是否用于当今的 IT 解决方案?还是正在失去魅
我正在更新现有的 Mule 配置,任务是增强它以根据消息的某些属性将消息路由到不同的端点,因此最好对我手头的两个选项有一些利弊: 在消息上添加属性,使用“message-properties-tran
我有一个订阅 JMS 主题应用程序的 Java 应用程序,该应用程序偶尔会出现以下异常: javax.jms.JMSException: Connection has been terminated
我知道 Camel 的 JMS 组件用于接收消息,使用 Springs DefaultMessageListenerContainer。它可以配置为使用 CLIENT_ACKNOWLEDGE 模式来确
通常不鼓励使用从 JMS 提供者返回的消息 ID 作为相关 ID,将消息发布到队列中。人们如何为请求/响应架构生成相关 ID? 最佳答案 客户端可以使用唯一的 ID 标准,如 UUID生成新的 ID。
我有一个简单的代码可以将 2 条消息放入队列中。 1) 我用两台服务器设置了 connectionNameList。 2) 这两个服务器是独立的,但有相同的队列管理器和定义相同名称的队列,例如“QMg
我是一名优秀的程序员,十分优秀!