问题标签 [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.
java - 没有 J2EE 容器的 JNDI(使用 JNP?也许是其他一些提供者?)
我需要在没有 J2EE 容器开销的情况下运行 JNDI 提供程序。我已尝试按照本文中的说明进行操作,该文章准确地描述了(第 3 页)我想要做什么。不幸的是,这些方向都失败了。我也必须将 jboss-common.jar 添加到我的类路径中。一旦我这样做了,我会得到一个堆栈跟踪:
我希望能够完成这项工作,但我也愿意向其他轻量级独立 JNDI 提供者开放。所有这一切都是为了使 ActiveMQ 工作,如果有人可以建议另一个轻量级 JMS 提供程序,它可以在 vm 之外很好地工作,客户端所在的客户端不需要一个完整的应用程序服务器也可以工作。
java - JMS 有什么用?
我正在寻找 JMS 是一个很好的解决方案的问题的(简单)示例,以及为什么 JMS 在这些情况下是一个很好的解决方案的原因。过去,当 B 不一定能立即处理消息时,我只是将数据库用作将消息从 A 传递到 B 的一种方式。
这种系统的一个假设示例是所有新注册的用户都应在注册后 24 小时内收到一封欢迎电子邮件。为了论证起见,假设数据库不记录每个用户注册的时间,而是将每个新用户的引用(外键)存储在 pending_email 表中。电子邮件发件人作业每 24 小时运行一次,向此表中的所有用户发送一封电子邮件,然后删除所有 pending_email 记录。
这似乎是应该使用 JMS 的问题,但我不清楚 JMS 相对于我所描述的方法有什么好处。DB 方法的一个优点是消息是持久的。我知道 JMS 消息队列也可以持久化,但在这种情况下,JMS 与我描述的“数据库作为消息队列”方法之间似乎没有什么区别?
我错过了什么?- 大学教师
queue - 替换 jms 队列中的消息
我正在使用 activemq 在不同进程之间传递请求。在某些情况下,我在队列中有多个重复的消息(它们是请求)。我想只有一个。有没有办法发送一条消息,它将替换具有相似属性的旧消息?如果没有,有没有办法检查队列并检查具有特定属性的消息(在这种情况下,如果存在旧消息,我将不会发送新消息)。
澄清(基于戴夫的回答):我实际上是在尝试确保队列上没有任何重复的消息,以减少消费者收到消息时发生的处理量。因此,我想替换一条消息,甚至不把它放在队列中。
谢谢。
java - 如何嵌套 Spring JMS MessageConverters
我想编写一个可以包装另一个 MessageConverter 的 MessageConverter 类。此 MessageConverter 将调用子转换器,假定它生成一个 TextMessage。它将获取有效负载并 GZIP 压缩它,创建一个 BytesMessage 最终返回给发送者。
问题出在 fromMessage() 中。我可以将有效负载转换回字符串,但随后我想创建一个“虚拟”TextMessage 将字符串填充到然后传递给子 MessageConverter 的 fromMessage() 方法。在那里我碰壁了,因为我无法在没有 JMS 会话对象的情况下创建 TextMessage,而且似乎根本无法在这种情况下获得会话。
我可以创建额外的属性来将更多的东西连接到这个类,但看起来我什至不能轻松地从 JMSTemplate 对象获取会话,而且我无法想象我还需要什么。
我即将在此代码中创建一个私有 TextMessage 实现,只是为了为子 MessageConverter 包装一个字符串。该类将需要大量的虚拟方法来充实界面,所有这些打字都会让婴儿耶稣哭泣。
任何人都可以提出更好的方法吗?
java - 如何格式化 JMS 文本消息的正文?
每个人都只是在消息中使用 XML 吗?XML 有什么好的替代品吗?如果您确实使用 XML,您是否定义了 XML 模式以便客户端知道如何向您的服务发送消息?
web-services - 实时 SOA 应用程序的最佳消息传递媒介?
我正在开发一个使用 SOA 风格实现的实时应用程序(读取通过一些消息传递协议 - JMS、MQ 或 HTTP 连接的松散耦合组件)。
设计此系统的架构师选择使用 JMS 来连接组件。该系统是实时的,因此如果一个组件发生故障(事务将简单地超时),则无需将消息排队。此外,不需要保证交付或回滚。
在这种情况下,与 HTTP Web 服务(速度、资源占用等)相比,使用 JMS 有什么好处吗?
我在想的一件事是,由于 JMS 方法要求我们设置线程池大小(侦听 JMS 主题/队列的组件数量),因此 HTTP 服务不是更合适,因为这种额外的配置不是需要(为每个 HTTP 请求创建一个新线程,使应用程序可扩展到“无限”数量的请求,直到服务器耗尽资源)。
我错过了什么吗?
java - javax.jms 不存在 - 编译 activemq 示例
我正在尝试编译 activemq 附带的示例
在 apache-activemq-5.1.0\example\src\
TopicPublisher.java、CommandLineSupport.java
在通过 netbeans 编译时,它有一些引用问题,说 javax.jms 不存在。
我已经尝试过 j2ee.jar、openjms、sun jms,但它们都给出了相同的错误。
它还抱怨 org.apache.activemq.util 不存在,但我引用的是 activemq-all-5.1.0.jar。
注意:对外部 jar 的所有其他引用都可以正常工作
有任何想法吗?
编辑:需要引用的罐子是
它们在 lib 文件夹中的 activemq 二进制文件中
java - 带有数据源的消息驱动 Bean
我的问题是如何配置 EJB 3.0 样式的消息驱动 bean 以在 jboss 中使用已配置的 JMS 数据源。
例如,我的 MDB 看起来像:
但我希望 bean 附加到给定的 JMS 数据源(对于 jboss 4.2.2,这是在 deploy/jms/jms-ds.xml 中)。也许这甚至是不可能的,但值得一问。
logging - 所有消息的 JMS 队列日志记录/浏览(队列的不可见使用者)(OpenJMS)
你知道,如果有一些很好的方法来浏览/记录 JMS 队列?(我正在使用 OpenJMS)
对于主题,我可以再添加一个消费者,仅此而已,但是对于队列,我还没有完成解决方案。我想记录某些队列和主题中的所有消息,而不会将它们从队列中“弹出”(以便记录器可以浏览“不可见”的队列)。
使用javax.jms.QueueBrowser我可以获得队列的快照,但这似乎没有提供“侦听器解决方案” - 一次又一次地读取无限循环队列上的所有消息,并希望没有消息碰巧被写入并在我的快照之前消耗 - 这听起来不是一个好的解决方案。
另一种选择是为每个“逻辑队列”创建两个队列——一个用于记录器,一个用于实际使用——记录器然后将消息转发到“实际队列”——这可能可行,但可能有更好的解决方案?
因此,如果有人有一个解决方案可以通过“不可见”记录器或其他一些不错的记录解决方案来获取队列中的所有消息,那会很酷。
jms - activemq中TCP端点的简单路由有什么问题?
我正在尝试从 ActiveMQ 开始一个简单的演示,它将演示 TCP 到 TCP 的路由。我在我的 activemq.xml 配置文件中的骆驼上下文中对端点和路由进行编码。
知道为什么这不起作用吗?
AMQ 服务器似乎没有打开监听端口。
编辑:作为一个简单的演示,这里的意图是使用两个 telnet 终端(A 和 B)连接到 ActiveMQ,并能够通过消息队列服务器将消息从一个路由到另一个。稍后,我可能会尝试根据内容进行过滤或路由。