Tag: jms

JEE7 + WildFly(HornetQ) – 从应用程序暂停队列

我们使用WildFly + HornetQ作为我们的应用程序服务器和JMS消息队列,并且要求能够从应用程序暂停/恢复队列。 这可能吗?

Jboss Messaging JMS

我成功地将消息发送到我的localhost Jboss服务器上的队列名称ReceiverQueue ,如何检索我发送给它的消息,或者如何检查队列中是否有任何消息(如果有的话)。 或者我可以得到某种解释是什么是最好的方法。 谢谢 一个工作的发送/接收教程也将被接受。 任何能让我发送到队列并从该队列接收消息的东西都会得到接受的答案。 我正在使用Spring。 我想要一个使用bean注入的应用程序上下文来实现它的解决方案。

如何防止Apache CXF发送响应消息?

在给定SOAP头元素具有给定值的情况下(例如,如果头标记“response”的值为“0”),我不希望Apache CXF完全返回响应。 我怎样才能做到这一点? 似乎CXF假设所有呼叫都会收到响应。 (我知道在Web服务上下文中这似乎很奇怪,但如果你的传输是JMS,那似乎不那么奇怪)。

为JMS使用特定密钥库

我们要求将SSL客户端证书用于与IBM MQ服务器的JMS连接。 我已经专门针对Websphere MQ提出了一个问题,但后来我了解到这主要是JSSE的工作,可以通过Java系统属性进行配置(例如-Djavax.net.ssl.keyStore= )。 但是由于我们的WildFly 9 AS中已经有应用程序其他部分的活动密钥库,我正在寻找一种方法来为JMS部分启用特定的密钥库 – 这可以做到吗?

在某些时间安排消息驱动的bean来访问队列?

1) 您是否可以安排消息驱动bean仅在特定时间访问队列? 例如,用户有两个联系选项 – 上午9点至下午5点至下午5点至晚上10点。 我想有两个MDB,一个只在上午9点到下午5点活跃,另一个在下午3点到晚上10点。 两个队列都有全天发送给他们的消息,但我只想在特定时间处理它们。 理想情况下@Schedule可以工作但不幸的是它没有。 使用Glassfish 3.1.2和ActiveMQ 5.5.1,但我很确定它不是特定于实现的问题。 编辑1 码 @MessageDriven( activationConfig = { @ActivationConfigProperty(propertyName = “destinationType”, propertyValue = “javax.jms.Queue”), @ActivationConfigProperty(propertyName = “destination”, propertyValue = “jms/queue/amqmsg”) }) public class ExampleMessageBean implements MessageListener { @Schedule(second=”*”, minute=”*”, hour=”9-17″, persistent = false) public void onMessage(Message message) { try { System.out.println(“We’ve received a message: ” + […]

ActiveMQ:没有经纪人的新手消费者

我正在编写一个从队列中消耗的JMS客户端。 如果重要的话,我的经纪人是activemq。 一个要求是即使经纪人关闭,客户也应该开始。 在这种情况下,它应该表现得好像队列中没有消息,并且一旦代理启动并且消息开始相应的行为。 问题是在我的代码中: connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start() 如果代理已关闭,那么它会卡在connection.start() 。 虽然我想要的是connection.start()以静默方式返回并继续尝试在后台连接并消耗消息,而不能消息。 我怎样才能做到这一点。

我应该在JSF ManagedBean中打开/关闭JMS连接的位置?

在使用JSF 2和Ajax的简单演示Web应用程序中,ManagedBean中有一个方法从JMS队列接收消息: @ManagedBean public class Bean { @Resource(mappedName = “jms/HabariConnectionFactory”) private ConnectionFactory connectionFactory; @Resource(mappedName = “jms/TOOL.DEFAULT”) private Queue queue; public String getMessage() { String result = “no message”; try { Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(queue); Message message = consumer.receiveNoWait(); if (message != null) { result = […]

XA / JTA事务:在DB更改可见之前到达JMS消息

上下文是: producer(JTA transaction PT )既向JMS队列发送消息又进行DB更新; consumer(JTA事务CT )侦听同一队列并在收到消息时读取DB; 应用程序服务器 – WebLogic,DB – Oracle。 我观察到,如果已经收到相应的JMS消息( PT已经提交了?),有时CT不能(但是?)能够看到PT的 DB更改,事件。 似乎JTA不能保证这种一致性(这在Jurgen Holler的演讲“性能交易选择”中也得到了证实)。 避免此类问题的最佳方法是什么(除了明显的 – 不使用JTA)? 谢谢。

从远程客户端使用Glassfish JMS

我在服务器上安装了glassfish,其中JMS ConnectionFactory设置了jms / MyConnectionFactory,其资源类型为javax.jms.ConnectionFactory。 我现在想从本地计算机上的客户端应用程序访问它,我有以下内容: public static void main(String[] args) { try{ Properties env = new Properties(); env.setProperty(“java.naming.factory.initial”, “com.sun.enterprise.naming.SerialInitContextFactory”); env.setProperty(“java.naming.factory.url.pkgs”, “com.sun.enterprise.naming”); env.setProperty(“java.naming.factory.state”, “com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl”); env.setProperty(“org.omg.CORBA.ORBInitialHost”, “10.97.3.74”); env.setProperty(“org.omg.CORBA.ORBInitialPort”, “3700”); InitialContext initialContext = new InitialContext(env); ConnectionFactory connectionFactory = null; try { connectionFactory = (ConnectionFactory) initialContext.lookup(“jms/MyConnectionFactory”); } catch (Exception e) { System.out.println(“JNDI API lookup failed: ” + e.toString()); e.printStackTrace(); […]

如何使用JavavalidationJMS队列是否存在?

如何使用Java API检查JMS服务器上是否存在队列? 我现在不想向队列发送或接收任何数据,只需validation队列是否存在。 此外,队列可能是空的。 这是我的代码示例。 为简单起见,我删除了error handling。 Connection connection = null; Session session = null; connection = factory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //I was hoping this next line would throw an exception if the queue does not exist Queue queue = session.createQueue(queueName); 我的JMS服务器是TIBCO EMS。 我希望有一个适用于5-7版本的解决方案。 解 我按照接受的答案中的建议,但创建了一个浏览器。 以下行根据需要引发了exception: QueueBrowser browser = session.createBrowser(queue);