问题标签 [message-queue]

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 投票
1 回答
1288 浏览

message-queue - System i (iSeries, AS/400) 消息队列选项

我正在尝试在 iSeries 上找到除 WebSphere MQ 之外的 MQ 选项。这个事情谁有经验?可能吗?我可以运行像 OpenMQ 这样的纯 Java MQ 服务器吗?

0 投票
1 回答
392 浏览

sql-server - sql服务代理功能问题

我是一名刚起步的 Web 开发人员,正在从事一个雄心勃勃的 Web 应用程序项目。

所以在做了一些研究之后,我发现了 SQL Service Broker。这似乎是我可以使用的东西,但我不确定。由于学习它需要有人投入大量时间,因此我想确保它符合我的需求。

我需要实现一个网站用户可以向网站提交文本的系统。该消息流必须是冗余的并以 FIFO 方式处理,在流的另一端,另一组用户处理消息。

现在,最后一组用户中的一个正在阅读的消息应该被锁定,这样其他人就不能同时阅读它。然后用户可以决定是否处理该消息。只有当他决定处理该消息时,才能将其从队列中删除。如果他决定不想处理该消息,则应将该消息放回队列中(在队列的末尾,或至少具有最高优先级),以便另一个用户可以阅读并决定.

这是我可以用 SQL Service Broker 实现的吗?我在错误的轨道上吗?

谢谢!

0 投票
1 回答
1904 浏览

android - Android 从服务加载列表视图项目导致挂起

在我的 Android 应用程序中,我有一个 ListActivity。这个 ListActivity 使用了一个 SimpleAdapter,我用我的服务中的项目填充了它。所以,在我的代码中,我这样做:

整个操作几乎不需要任何时间(不到一秒),所以我希望它在 UI 线程中运行。请参阅我的 onCreate:

我希望它在 UI 线程中运行的原因是,如果您选择了一个列表项,或者您已经滚动到 ListView 中的某个位置,并且您旋转设备或取出键盘或其他东西(触发配置更改)当我的活动重新启动时,Android 将尝试在 onCreate 之后立即恢复状态。但是,如果我在单独的线程中运行它,它不会。还有一个很酷的淡入淡出动画 :)
我在 UI 线程中运行它时遇到的问题是,当我尝试绑定到服务时,该服务绑定请求被放入消息队列中。但是当我进入我的循环时,我停止了消息队列的循环。所以我的程序挂起,因为它正在等待服务被绑定,并且服务在循环结束之前不会被绑定。我想过放Looper.loop()在我的循环中,但这只是挂在Looper.loop()(我不知道为什么。)
抱歉这么长的问题,
艾萨克沃勒

0 投票
3 回答
5867 浏览

java - 使用 JMS 的 WebSphere MQ

我有一个使用 WebSphere MQ Java API 和配置 (xml) 文件来访问 MQ 的应用程序。我想迁移到 WebSphere JMS API。为此,我尝试从我的本地 WAS 创建 1) WebSphere MQ 队列连接工厂和 2) WebSphere MQ 队列目标。当我配置我的队列目标并尝试设置我的 MQ 配置参数时,我收到一条错误消息,例如“WMSG0316E:您尝试查看不是本地队列的队列。仅支持本地队列的管理。”

在我尝试连接到远程队列的意义上,该消息是正确的。现在,我不能将我的 WAS 配置为尝试连接到远程队列的 MQ 客户端吗?MQ 客户端在服务器类路径中有必要的 MQ JMS jar。

如果有人能对此有所了解,将不胜感激。

0 投票
4 回答
20156 浏览

php - PHP 中的异步处理或消息队列 (CakePHP)

我正在使用 CakePHP 构建一个网站,该网站处理通过 XML-RPC API 和 Web 前端上传的文件。文件需要被 ClamAV 扫描,需要生成缩略图等等。所有需要一些时间的资源密集型工作,用户不必等待。所以,我正在研究一般的 PHP 异步处理,特别是 CakePHP。

我遇到了看起来很有前途的 CakePHP的MultiTask 插件。我还遇到了各种消息队列实现,例如droprbeanstalkd。当然,我还需要某种后台进程,可能使用某种 Cake Shell 来实现。我看到 MultiTask 使用PHP_Fork来实现一个多线程的 PHP 守护进程。

我需要一些关于如何以最佳方式将所有这些部分组合在一起的建议。

  • 用 PHP 编写一个长期运行的守护进程是个好主意吗?我应该注意什么?
  • 外部消息队列实现的优势是什么?MultiTask 插件不使用外部消息队列。它使用 MySQL 表来存储任务。
  • 我应该使用什么消息队列?滴管?豆茎?还有什么?
  • 我应该如何实现后端处理器?分叉 PHP 守护进程是个好主意还是只是自找麻烦?

我目前的计划是使用 MultiTask 插件或编辑它以使用 beanstald 而不是它自己的 MySQL 表实现。队列中的作业可以简单地由一个任务名称和一组参数组成。PHP 守护进程将监视传入的作业并将它们传递给它的一个子线程。将简单地使用给定的参数执行 CakePHP 任务。

对此有任何意见、建议、评论、陷阱或火焰吗?

0 投票
3 回答
14507 浏览

transactions - 如果消息在 MQ 中回滚,会发生什么?

我收到来自 WebSPhere MQ 队列的消息。我尝试处理,如果我收到一些异常,我想将消息回滚到 MQ 队列。

我做同样的事情没有问题。消息会发生什么?它会排到队列的底部吗?

如果我尝试从队列中提取消息,我会收到与回滚相同的消息吗?

可能的行为是什么?我想知道这种行为通常在大容量队列场景中吗?

感谢任何输入。

谢谢,芒卢

0 投票
3 回答
2424 浏览

rest - ATOM 为“企业”提供消息服务

我参加了Jim Webber的演示,在他的演示中,他说 ATOM 在许多情况下是 JMS 的一个很好的替代品。由于 JMS 是一种消息传递服务,我对此很好奇。你们使用 ATOM 作为消息服务吗?它可靠且可扩展吗?

JMS 的最大优点是它使用 push 方法(服务器通知新消息)而不是 pull 方法(客户端每 X 毫秒不断请求新消息)。我认为对于“Web 2.0”应用程序,这种方法很酷,但对于“企业”应用程序,推送方法的可扩展性要高得多。你们有什么感想?

0 投票
4 回答
9899 浏览

websphere - 在 websphere 上部署应用程序时出现 mqjbnd05 错误

我全新安装了 Wesphere 6.1 Fixpack 23。我部署了一个需要 MQSeries JMS 队列的应用程序。我设置了一个基于 MQSeries 提供者的请求和回复队列以及一个基于 MQSeries 提供者的队列连接工厂。当部署的应用程序尝试访问队列时,我收到以下错误。

任何援助将不胜感激。谢谢!

[5/28/09 10:33:42:538 EDT] 00000033 ServletWrappe E SRVE0068E:在 servlet 的服务方法之一中抛出未捕获的异常:espaapp。抛出异常:org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是 java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path) 原因:java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path) 在 java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:953) 在 java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:922) 在 java.lang.System.loadLibrary(System.java:451) 在 com.ibm。 mq.MQSESSION.loadLib(MQSESSION.java:1028) 在 com.ibm.mq.server.MQSESSION$1.run(MQSESSION.java:246) 在 java.security.AccessController.doPrivileged(AccessController.java:192) 在 com。 ibm.mq.server.MQSESSION.(MQSESSION.java:243) 在 java.lang.J9VMInternals.initializeImpl(Native Method) 在 java.lang.J9VMInternals.initialize(J9VMInternals.java:177) 在 com.ibm.mq.MQSESSIONServer .getMQSESSION(MQSESSIONServer.java:68) 在 com.ibm.mq.MQSESSION.getSession(MQSESSION.java:508) 在 com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:213) 在 com.ibm.mq.MQBindingsManagedConnectionFactoryJ11 ._createManagedConnection(MQBindingsManagedConnectionFactoryJ11.java:186) 在 com.ibm.mq.MQBindingsManagedConnectionFactoryJ11.createManagedConnection(MQBindingsManagedConnectionFactoryJ11.java:225) 在 com.ibm.mq.StoredManagedConnection.(StoredManagedConnection.java:84) 在 com.ibm.mq.MQSimpleConnectionManager。在 com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:795) 在 com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:709) 在 com.ibm.mq.MQQueueManagerFactory 的 allocateConnection(MQSimpleConnectionManager.java:173) .constructQueueManager(MQQueueManagerFactory.java:664) 在 com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:160) 在 com.ibm.mq.MQQueueManager.(MQQueueManager.java:550) 在 com.ibm.mq.MQSPIQueueManager .(MQSPIQueueManager.java:62)在 com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2427) 在 com.ibm.mq.jms.MQConnection.createQMXA(MQConnection.java:1806) 在 com.ibm.mq.jms.MQQueueConnection .(MQQueueConnection.java:105) 在 com.ibm.mq.jms.MQQueueConnection.(MQQueueConnection.java:66) 在 com.ibm.mq.jms.MQXAQueueConnection.(MQXAQueueConnection.java:59) 在 com.ibm.mq .jms.MQXAQueueConnectionFactory.createXAQueueConnection(MQXAQueueConnectionFactory.java:82) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.createConnection(JMSManagedQueueConnection.java:123) 在 com.ibm.ejs.jms.JMSManagedConnection.(JMSManagedConnection.java:315)在 com.ibm.ejs.jms.JMSManagedQueueConnection.(JMSManagedQueueConnection.java:71) ... 更多java:1806) 在 com.ibm.mq.jms.MQQueueConnection.(MQQueueConnection.java:105) 在 com.ibm.mq.jms.MQQueueConnection.(MQQueueConnection.java:66) 在 com.ibm.mq.jms.MQXAQueueConnection .(MQXAQueueConnection.java:59) 在 com.ibm.mq.jms.MQXAQueueConnectionFactory.createXAQueueConnection(MQXAQueueConnectionFactory.java:82) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.createConnection(JMSManagedQueueConnection.java:123) 在 com.ibm .ejs.jms.JMSManagedConnection.(JMSManagedConnection.java:315) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.(JMSManagedQueueConnection.java:71) ... 更多java:1806) 在 com.ibm.mq.jms.MQQueueConnection.(MQQueueConnection.java:105) 在 com.ibm.mq.jms.MQQueueConnection.(MQQueueConnection.java:66) 在 com.ibm.mq.jms.MQXAQueueConnection .(MQXAQueueConnection.java:59) 在 com.ibm.mq.jms.MQXAQueueConnectionFactory.createXAQueueConnection(MQXAQueueConnectionFactory.java:82) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.createConnection(JMSManagedQueueConnection.java:123) 在 com.ibm .ejs.jms.JMSManagedConnection.(JMSManagedConnection.java:315) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.(JMSManagedQueueConnection.java:71) ... 更多com.ibm.ejs.jms.JMSManagedQueueConnection.createConnection(JMSManagedQueueConnection.java:123) 上 com.ibm.ejs.jms.JMSManagedConnection.(JMSManagedConnection.java:315) 上的 MQXAQueueConnectionFactory.createXAQueueConnection(MQXAQueueConnectionFactory.java:82)。 ibm.ejs.jms.JMSManagedQueueConnection.(JMSManagedQueueConnection.java:71) ... 更多MQXAQueueConnectionFactory.createXAQueueConnection(MQXAQueueConnectionFactory.java:82) 在 com.ibm.ejs.jms.JMSManagedQueueConnection.createConnection(JMSManagedQueueConnection.java:123) 在 com.ibm.ejs.jms.JMSManagedConnection.(JMSManagedConnection.java:315) 在 com. ibm.ejs.jms.JMSManagedQueueConnection.(JMSManagedQueueConnection.java:71) ... 更多

0 投票
2 回答
1641 浏览

winapi - 确定窗口消息队列深度

我们有一个应用程序使用窗口消息队列将数据从套接字传递到消费者 HWND(速率约为 2100Hz)。此应用程序已经工作了 2 年以上。最近,我们的应用程序开始出现 WM_TIMER 没有被我们的应用程序触发/执行的问题。我认为这是由于数据被泵入消息队列。

我的问题是有没有办法确定给定线程/HWND 的消息队列中有多少待处理消息?

0 投票
1 回答
2229 浏览

c# - 两次接收相同的 MSMQ 消息?

我有一个基于 MSMQ 的系统,它具有相互通信的三层。为简单起见,我将它们称为第 1、2 和 3 层。它们的位置如下:

因此,第 1 层仅与第 2 层对话,第 3 层仅与第 2 层对话,第 2 层与其他两个对话。我有四个队列,

各层通过此基础设施进行通信:

(对不起,如果这比必要的更详尽)

无论如何,一条消息从第 1 层传递到第 2 层,进行一些处理,然后将另一条(相关)消息发送到第 3 层,反之亦然。我遇到的问题是,有时我会从第 1 层向第 2 层发送两条消息,但不是按顺序接收两条消息,而是两次接收第一条消息。我正在使用BeginReceiveonLayer1_out异步接收消息。完成后,我处理收到的消息并BeginReceive再次调用以获取下一条消息。

为了追踪这一点,我在发送端实现了一个消息计数器,并将其写入文本文件。我正在使用该Extension属性来存储此消息号的字符串表示形式,以便我可以在处理端检索消息号。当我收到一条消息时,我将这个号码写入另一个文件。这应该产生两个具有相同内容的文件,但我会看到类似的东西

在回执日志中,表明消息 215 被处理了两次,而 216 没有通过。就我的目的而言,两次处理同一条消息对我没有任何影响(因此这在一段时间内一直未被注意到),但完全丢失一条消息是一个大问题。

有什么想法吗?