问题标签 [openmq]
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.
java - JMS 文件传输进度
有什么方法可以获取大文件传输的进度信息jms
吗?
我正在使用openmq
和点对点消息传递。
java - 是否可以让 JMS 队列等到收到消息的确认后再分派下一条消息
我设置了一个 JMS 队列,由单个生产者提供,并由 8 个不同的消费者使用。
我想配置我的队列/代理,以便传递给消费者的一条消息阻塞队列,直到消费者完成处理消息。在处理此第一条消息期间,可能不会将以下消息传递给另一个消费者。哪个消费者处理哪条消息并不重要,同一消费者连续消费许多消息是可以接受的,只要它死时另一个消费者能够接收其余未处理的消息。
为了做到这一点,我已经将我的所有消费者配置为使用CLIENT
确认模式,并且我已经对它们进行了编码,以便message.acknowledge()
仅在消息处理结束时调用。
我的理解是,这应该足以满足我的要求。
但是我显然错了,因为看起来我的兄弟(OpenMQ)正在尽快将消息传递给消费者,而无需等待消费者确认。结果,我并行处理了多条消息,每个消费者一条消息。
我显然做错了什么,但我不知道是什么。
作为一种解决方法,我认为我可以创建一个持久订阅,其中包含在所有消费者之间共享的固定客户端 ID。它可能只允许一个消费者连接到代理,但我无法摆脱这是一个相当丑陋的解决方法的感觉。
有谁知道我应该如何配置我的经纪人和/或我的客户来实现这一点?
glassfish - Open MQ 代理无法启动
我们正在运行带有 mq 5.1.1 的 Glassfish 4.1.1 (Payara)。这是一个带有负载均衡器和集群的 HA 设置。
Glassfish 运行正常。问题是 MQ 无法启动。
我认为远程 MQ 正在启动。我可以执行 imqcmd list bkr -b 并获得成功的结果。
但是,当我执行 imqcmd list bkr(或 imqcmd list jmx,没有-b 主机名)时,我得到:
我想摆脱错误,并查看我的网络 ip 而不是 localhost。
GF server.log 也给出了这个:
我想知道它无法创建的目录在哪里配置。
我已经调试了好几天了。我需要知道在哪里为嵌入式代理配置 ip。我还需要知道在哪里设置 jmxrmi url。
任何帮助,将不胜感激。谢谢!
jms - 手动启用 JMS MDB 或按延迟时间启动
部署 Web 项目时,有时我在 glassfish 日志中出现以下异常
原来是 glassfish 的已知 bug https://java.net/jira/browse/GLASSFISH-21522
就我而言,我注意到仅当 JMS 队列不为空时才会发生此异常。部署war时,MDB开始消费消息并因java.lang.NoClassDefFoundError异常而崩溃,这个NoClassDefFoundError发生是因为glassfish的lookupFromJars中发生了上述异常。
但是,当 JMS 队列中没有消息时,应用程序成功部署。部署后,MDB 会毫无例外地消费消息。
这是我的问题,如何为 MDB 消费者设置延迟。例如,在应用程序部署后一分钟后启动 MDB。
或者有没有办法手动启用MDB?
我正在使用 glassfish 4.1.1 和 glassfish 的 OpenMQ。
jms - MDB onMessage() 在重新传递消息的情况下保持连接
如果无法处理消息,例如由于某些外部端点故障,我需要重新传递消息。所以我正在使用以下 MDB 配置(值得一提的是,我正在使用 openMQ (Glassfish 4.1)):
这是 onMessage() 方法:
为了重新传递消息,也可以回滚事务,但是 openMQ 缺少重新传递间隔的属性,所以它不适合我:
https://github.com/javaee/openmq/issues/220
https://github.com/javaee/openmq/issues/23
https://github.com/javaee/openmq/issues/134
总而言之,重新传递工作正常,除了一个时刻:如果要重新传递消息,mdb 不会释放连接并为 endpointExceptionRedeliveryInterval * endpointExceptionRedeliveryAttempts 保留它,在我的例子中是 5 分钟。因此,maxPoolSize 的默认值为 32,32 条“坏”消息足以阻止 mdb。
有没有办法在消息重新传递的情况下释放连接?
java - java中使用JMS和OpenMQ的多线程如何工作?
我是 JMS 和 OpenMQ 的新手。我在我的代码中同时使用了多线程,但是在执行代码时我得到了这个奇怪的输出。谁能解释一下多线程中的这些语句是如何执行的?
我的另一种方法是这样的,它返回接收到的对象列表
扩展 Thread 类的 QueueReceiver 类是这样的:
}
我的输出是:
为什么它没有在 getAllTickets() 语句 2 之前打印所有接收方语句
java - 如何在 JMS 2 中创建临时队列并访问它
我正在开发一个 JMS 客户端服务器应用程序,其中客户端首先通过所有客户端的公共队列向服务器发送一些数据,然后服务器在客户端自身创建的临时队列中对其进行响应。我用谷歌搜索了它,但找不到如何在 JMS 2 中实现它,因为创建临时队列的传统方法是使用会话,但在 JMS 2 中,我使用的是 JMSContext,我通过它创建生产者和消费者。我的问题是如何以及在哪里
java - 如何在 OpenMQ JMS 中授予代理访问权限
当我在服务器上创建生产者以使用 getJMSReplyTo() 将响应返回给客户端时出现此错误
因为很明显是身份验证错误,所以我也更改了 access.properties 文件中的几行,但仍然出现此错误。有谁知道 OpenMQ 中是否有任何其他权限文件或如何配置代理以便可以在任何地方创建生产者。
java - 为远程连接工厂配置 Payara/GlassFish JMS 连接工厂
我正在努力了解如何正确配置 Payara/GlassFish 消息传递,以便从远程 Open MQ 服务器发送和接收消息。
从 Payara/GlassFish 管理控制台,我可以转到 Configurations > server-config > “Java Messaging Service”,然后我可以设置一个指向远程 Open MQ 服务器的新“JMS Host”。然后我将“JMS 服务类型”配置为 REMOTE 并做一些其他的事情来让 Payara/GlassFish 与远程主机上的 Open MQ borker 实例进行通信。我明白这一点。
现在设置连接工厂时,我转到资源>“JMS资源”>“连接工厂”设置连接工厂时,我不明白如果使用远程JMS代理需要“AddressList”属性. 如果我执行第一步并将“Java 消息服务”更新为 REMOTE 并连接到远程代理,是否仍需要“AddressList”属性?如果我确实需要“AddressList”,那么“Java 消息服务”配置的意义何在?
java - 生成绑定文件 Message Queue Broker 4.5
我正在运行创建DefaultMessageListenerContainer
bean 的 Tomcat。为此,它指的是connectionFactory
使用 bean 的 bean,该jndiTemplate
bean 使用imq/imq_admin_objects
.
bean定义如下
问题是没有生成这样的文件夹。我正在为 JMS 使用 Message Queue Broker 4.5。在运行服务时,它只创建一个 var/mq 目录。我希望它生成一个 imq 文件夹,该文件夹将包含用于创建 JMS 的相应绑定文件。