问题标签 [hornetq]
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.
activemq - JMS 消息优先级不适用于 Message
我需要设置消息优先级,以便接收器在低优先级消息之前使用高优先级消息。
首先,我尝试使用 message.setJMSPriority() 方法来设置优先级,但它在 HornetQ 和 ActiveMQ 中不起作用,所以最后我使用 setPriority() 方法设置了消息生产者的优先级,现在它工作正常。
为什么 Message.setJMSPriority() 在任何 JMS 供应商实现中都不起作用,为什么我们需要设置生产者的优先级而不是消息本身来设置消息的优先级?那么 Messge.setJMSPriority() 方法有什么用呢?
任何建议或评论表示赞赏。
jms - 如何确保在 JBoss 6 中的任何应用程序之前部署 HornetQ?
我们有一个问题,如果您在部署 Java EE 6 应用程序的情况下启动 JBoss 6,其中一个使用 JMS 队列,则相关的 MDB 在您重新部署应用程序之前不会使用任何消息。MDB 使用带有 Startup 注释的 Singleton。
到目前为止,我的研究导致假设这是由于在应用程序之后部署 HornetQ 引起的。我还在这里和这里找到了一些解决这个问题的提示,但是由于缺少 Maven 依赖项,我既不能(顺便说一下也不喜欢)在我的应用程序中使用 JBoss 特定注释,也没有使用任何部署描述符文件所以远的。
所以我的问题是,我如何确保在部署我的应用程序之前部署队列,最好使用标准 Java EE 注释或 HornetQ/JBossAS 配置文件?
dynamic - JNDI 查找失败,使用 JMX 调用动态创建队列
我使用 JBoss AS 6 和 HornetQ 2.2.5 作为 JMS 服务器和集成 JMS & JMX 和 Spring。我可以使用来自 Spring 的 JMX 调用动态创建新队列(例如 createQueue(queuename, jndiName)))。但是 JNDI 查找不起作用,我有其他物理队列,JNDI 查找工作正常。
代码示例:
我需要为这些明确配置任何东西吗?任何建议表示赞赏。
谢谢。
jboss - 实现 Hornetq
我需要弄清楚在我们的系统中实现 JMS 的正确方法。
目前我们有两个负载平衡的 JBoss 服务器用于最终用户事务目的,我们正在扩展基于事务中各种事件的通知功能。为了使其正常工作,决定使用以下方法,hornetQ 将嵌入事务 Jboss 服务器中,MDB 将附加在同一 JBoss 服务器中进行侦听并调用另一个 JBoss 服务器,该服务器将具有一些业务代码来对要发送的用户进行分类,最后该服务器将使用适当的用户调用 XMPP 服务器。
我的疑问是,在事务 JBoss 服务器中部署 MDB(事件使用者)是一种好方法,或者将 MDB 移动到专用于通知目的的 JBoss 服务器。请提出一些想法以获得更好的方法。
问候, 维拉姆
java - 具有多个消费者的 JMS 队列
我有一个带有 HornetQ 和一个队列的 JBoss-6 服务器:
有一个不同的消费者(在不同的机器上)连接到这个队列,但一次只有一个消费者处于活动状态。如果我关闭此消费者,消息将立即由其他消费者之一处理。
由于我的消息有一些耗时的处理,我希望多个消费者同时处理他们独特的消息。
我记得在早期版本的 JBoss 中也有类似的情况,这种设置可以正常工作。在 Jboss-6 中,消息系统运行良好——除了上面描述的问题。这个问题类似于Are multiple client consumer possible in hornetq? ,但场景与我的不相似。
更新 1:如果我关闭 (STRG+C) 一个消费者,则会有一个短暂的超时(直到服务器识别出丢失的消费者),直到下一个消费者收到消息。
更新 2:代码片段
和 MessageListerner:
java - JMS / HornetQ = 如何从客户端以编程方式创建 JMS 队列?
我知道可以通过hornetq-jmx.xml
配置文件在 HornetQ 中创建 JMS 队列。但我想从客户那里做到这一点?
我试过:
但这似乎没有创建队列(在 hornetq 服务器上)?当我尝试为此队列创建消费者时,我总是遇到队列未知的异常。
我将非常感谢有关如何从客户端创建 JMS 队列的建议。(如果可能的话,我根本不想在客户端和服务器上使用 JNDI)。
更新:
我不介意使用任何 HornetQs 核心 API(相对于 JMS API)从客户端创建队列。我的问题是:有什么方法可以从客户端创建队列(使用 JMS API 或使用 HornetQ Core API)。
java - JMS / Hornetq = 如何在不受信任的网络中保护?
我知道 HornetQ 提供
- 网络 SSL 传输
- 基于角色的安全模型
我的用例:
我的 HornetQ 服务器将/应该在任何人都可以访问的公共主机(=绑定到公共 IP 的服务)上运行(=任何人都可以通过端口扫描检测到服务......)
我的问题:
1.) 据我所知,netty SSL Transport 不提供通过 SSL 的身份验证(如果我认为它是正确的,这计划在 3.0 版本中发布)。所以它只保护传输,但每个人都可以连接到 HornetQ 服务器吗?
2.) Role Base Security 有 7 个可以授予的权限。我的问题是。如果我撤销所有权利,这是否被认为是安全的?如果有人在没有任何这些权限的情况下进行连接(并且默认用户没有分配特权/角色/全部撤销),HornetQ 会安全吗?还是强烈建议不要这样做,因为它仍然提供对系统的深入访问?
3.) 性能。在情况 2.) 中是安全的。有人用“未经身份验证”的消息攻击我的系统。基于角色的安全模型是在非常高的级别上实现的(因此不会消耗大量资源)还是这会使 DOS 变得非常容易,因为它必须深入到服务器中进行大量处理(并且还提供一个更多的攻击向量,因为攻击者将深入系统......)
非常感谢你!!马库斯
java - JBoss HornetQ:为慢速消费者设置消费者窗口大小
我想设置<consumer-window-size/>
为0
. 这似乎是另一个问题(具有多个消费者的 JMS 队列)的答案,并在本文第 17.1.1 章中进行了描述。我使用 JNDI 检索连接工厂。我的hornetq-jms.xml
样子是这样的:
该部分<connection-factory/>
是从上面的链接复制和粘贴,但我得到了错误:
这可能与 JBoss-6 相关,因为在其他环境中这似乎有效:使用 HornetQ 强制消息顺序
java - Java WeakReferences = 理解问题(使用 HornetQ JMS 实现)?
下面的代码不起作用:
原因:
我假设我找到了原因:http: //community.jboss.org/thread/150988 =>这篇文章说 HornetQ 使用了弱引用。
我的问题: 为什么代码不运行?(我有这个代码运行略有不同的实现,但代码失败反复失败)。我唯一的猜测是,以下参考资料:
不算是强引用吗?(这导致垃圾收集器删除对象......但是它们不是强引用吗?
或者代码是否存在另一个问题(如我所说,如果我将所有内容复制到一个方法中,代码运行良好。但如果我使用下面的单例方法,则代码不起作用......)另一个假设是它可能必须这样做使用 ThreadLocal 的东西,但我只使用一个线程......
代码不起作用(精简):
TestCode 运行上面的代码
给出以下错误:
解决方案:
1.)您还必须保留对 ConnectionFactory 的引用(请参阅下面 Clebert 的答案)
2.)并且这段代码包含一个严重的隐藏错误(不是那么容易发现):我在构造函数和 createConnectionSessionQueueProducer() 方法中初始化了连接。因此它将覆盖旧值并且(因为它是一个需要关闭的资源)将导致一个陈旧的连接,然后 HornetQ 将关闭并抛出错误。
非常非常感谢!马库斯
tomcat - 在 tomcat 中启动 HornetQ
我正在尝试在 Tomcat 中启动 hornetQ 2.0.0.GA。
我的应用程序在初始化时会尝试以这种方式启动 hornetq 服务器:
org.jnp.server.Main jndiServer;
jndiServer = new Main();
jndiServer.setNamingInfo(命名);
jndiServer.setPort(1099);
jndiServer.setBindAddress("localhost");
jndiServer.setRmiPort(1098);
jndiServer.setRmiBindAddress("localhost");
jndiServer.start();
...
jmsServer = new JMSServerManagerImpl(hornetqServer, jmsConfig);
jmsServer.start();
我需要启动 jndi 服务,然后我可以查找 ConnectionFactory 以将其与 Bitronix TM 集成。
它在独立测试中运行正常,但是当我在 tomcat 中运行它时,
我在 jndiServer.start() 中收到错误;
引起:java.rmi.server.UnicastRemoteObject 的 java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:293) 的 sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:175) 的 java.lang.NullPointerException .exportObject(UnicastRemoteObject.java:256) 在 org.jnp.server.Main.initJnpInvoker(Main.java:462) 在 org.jnp.server.Main.start(Main.java:422) ... 50 更多
有什么帮助吗?
谢谢,
德米安