问题标签 [jms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10137 浏览

java - 在 Java 中连续处理异步队列的最佳方法是什么?

我很难弄清楚如何构建我系统的最后一部分。目前我正在运行一个 Tomcat 服务器,它有一个响应客户端请求的 servlet。每个请求依次将处理消息添加到异步队列(我可能会通过 Spring 或更可能使用 Amazon SQS 使用 JMS)。

事件的顺序是这样的:

发送方:
1. 接受客户端请求
2. 将一些数据添加到与此请求相关的具有唯一 ID 的 DB 中
3. 将表示此请求的消息对象添加到消息队列

接收方:
1. 从队列中拉出一个新的消息对象
2. 打开对象并根据 msg 对象中包含的信息从网站中获取一些信息。
3. 发送电子邮件警报
4. 使用已为此请求完成操作的信息更新我的数据库行(相同的唯一 ID)。

我很难弄清楚如何正确处理接收方。一方面,我可能可以创建一个简单的 java 程序,我从命令行启动该程序,该程序选择队列中的每个项目并对其进行处理。那安全吗?让该程序作为 Tomcat 容器内的另一个线程运行是否更有意义?我不想连续执行此操作,这意味着接收端应该能够一次处理多个对象——使用多个线程。我希望它每天 24 小时一直在运行。

构建接收端有哪些选择?

0 投票
2 回答
7873 浏览

jms - JMS 回滚

我有一个涉及发送 JMS 消息的过程。该过程是交易的一部分。如果事务的后一部分失败,即发送消息的前一部分之后的部分,我需要取消该消息。我的一个想法是以某种方式设置消息在一定时间内不会被拾取,如果我需要回滚,那么我可以去取消消息。不知道消息传递,我不知道这个想法是否可能。或者,有更好的主意吗?谢谢

0 投票
3 回答
7610 浏览

java - 如何通过 JMS API 设置 MQMD ApplicationID 字段?

我正在使用 JMS API 将消息发送到 Websphere MQ 服务器。提取我创建的消息的应用程序希望我将 MQMD 结构中的 ApplicationID 字段设置为常量值。我在 JMS API 中找不到访问 MQMD 结构的方法

问题:有没有办法做到这一点?如果是,那怎么办?如果不是,那么我唯一的选择是使用 MQ java API,而不是 JMS API?

0 投票
3 回答
2275 浏览

java - 用于异步调用的 Apache Camel

将 Apache Camel 用于异步请求是否有意义?或者我应该使用 JMS 服务器使用简单的 MoM。我不需要任何企业集成模式。

任何帮助都会很有用。

0 投票
1 回答
1170 浏览

jms - WLI JMSControl 中的顺序单元

我们的一位客户打算使用Unit-Of-Order Weblogic Server Feature (UOO)

在纯 Java 代码中使用 UOO 发送带有自定义 UOO 名称的 JMS 消息,以及将 Aqualogic 服务总线中的 UOO 名称从代理服务传播到业务服务(两者都使用 JMS 作为传输协议),一切正常。

但是,在 Weblogic 集成中使用 UOO 以及 WLI JMSControl 无法正常工作。

考虑这段代码:

它将属性发送MyCustomProperty给 JMS 使用者,但JMS_BEA_UnitOfOrder与 UOO 名称相关的属性被忽略。而是使用默认的用户生成的 UOO 名称。

那么,如何使用 Weblogic JMSControl 自定义我的 UOO 名称?

0 投票
5 回答
13537 浏览

java - JMS 消息传递性能:大量主题/队列与广泛过滤(消息选择器)

我正在开发一个将大量使用 JBoss Messaging (JMS) 的项目。我的任务是为其他开发人员围绕消息构建一个易于使用的包装器,并且正在考虑使用 JMS 的消息选择器来提供一种过滤技术,以将不必要的消息发送降至最低。我很好奇是否有人在性能方面有这样做的经验?我担心 JMS 提供者可能会陷入消息选择器的困境,从而有效地破坏了整个目的。但是,这比为每种消息类型创建一长串主题/队列要好得多。

最终,毫无疑问,我最终会使用两者的某种组合,但无论我更倾向于哪种方式,我都会担心对性能的影响。

0 投票
1 回答
5790 浏览

jms - Weblogic“放弃交易”警告

我们在 WL 服务器上随机收到如下警告。我们想更好地了解这些警告到底是什么,以及我们应该做些什么来避免它们。

86,606 秒后放弃事务:Xid=BEA1-52CE4A8A9B5CD2587CA9(14534444), Status=Committing,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=86605, seconds left=0,XAServerResourceInfo[JMS_goJDBCStore]=(ServerResourceInfo[JMS_goJDBCStore]= ( state=committed,assigned=go_server),xar=JMS_goJDBCStore,re-Registered = true),XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]= (ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=new,assigned= none),xar= weblogic.jdbc.wrapper.JTSXAResourceImpl@1a8fb80,re-Registered = true),SCInfo[go+go_server]= (state=committed),properties=({weblogic.jdbc=t3://10.6.202.37 :18080}),本地属性= ({weblogic.transaction.recoveredTransaction=true}),OwnerTransactionManager= ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=go_server+10.6.202.37:18080+go+t3+, XAResources={JMS_goJDBCStore, weblogic.jdbc.wrapper.JTSXAResourceImpl},NonXAResources= {})],CoordinatorURL=go_server+10.6.202.37:18080+go+t3+)

我确实理解 BEA 的解释

错误:在 secs 秒后放弃交易:tx

描述:当一个事务被放弃时,该事务的知识将从试图推动该事务完成的事务管理器中删除。JTA 配置属性 AbandonTimeoutSeconds 确定事务管理器在尝试提交或回滚事务时应该坚持多长时间。

原因:资源或参与服务器可能在 AbandonTimeoutSeconds 期间不可用。

行动:检查参与资源的启发式完成并纠正任何数据不一致。

我们观察到您可以通过删除 *.tlog 文件来消除这些警告,但这似乎不是处理警告的正确策略。

警告指的是 JMS 和我们的 JMS 存储。我们确实使用 JMS。我们只是不明白为什么交易在那里挂起,为什么它们会被“放弃”??

0 投票
2 回答
2838 浏览

java - 在 Java JMS ResourceAllocationException 方面需要帮助

我收到以下错误:

javax.jms.ResourceAllocationException: [C4073]: A JMS destination limit was reached. Too many Subscribers/Receivers for Queue

设置是这样完成的,即有一个提供者和两个消费者。发生此错误的原因是因为它是一个队列并且它只能有一个提供者和一个消费者吗?

0 投票
7 回答
20145 浏览

java - 如何暂时禁用消息侦听器

什么是暂时禁用消息侦听器的好方法?我要解决的问题是:

  • 消息侦听器接收到 JMS 消息
  • 尝试处理消息时出现错误。
  • 我等待我的系统再次准备好能够处理消息。
  • 在我的系统准备好之前,我不想再收到任何消息,所以...
  • ...我想禁用消息侦听器。
  • 我的系统已准备好再次处理。
  • 失败的消息得到处理,JMS 消息得到确认。
  • 再次启用消息侦听器。

现在,我正在使用 Sun App Server。我通过在 MessageConsumer 中将其设置为 null 来禁用消息侦听器,并使用 setMessageListener(myOldMessageListener) 再次启用它,但在此之后我不再收到任何消息。

0 投票
2 回答
3593 浏览

apache-flex - Tomcat/BlazeDS/ActiveMQ 断开连接问题

我们的 Tomcat/BlazeDS/ActiveMQ 堆栈出现断开连接。尽管我们的 BlazeDS StreamingAMFChannel 配置了默认的空闲超时分钟数 0,但它似乎在大约 30 分钟的空闲时间后超时(见日志)。在此期间客户端不做任何请求,我们也不会从 ActiveMQ 主题推送消息。

我们在 activeMQ 和 BlazeDS 上启用了调试日志记录,并看到 BlazeDS 正在删除消费者。不幸的是,在断开连接消息之前没有日志消息,因此我们无法真正跟踪何时在 BlazeDS 中调用它。

有没有其他人经历过这个或任何人都可以提供解决方案?

* ActiveMQ 日志 *

* BlazeDS 日志 *