Tag: jms

JMS和ThreadPool有问题吗?

我希望当一个线程处理完一条消息(threadPool提交一个可调用的)时,jms会收到一条消息。 消息由主线程接收。 以下哪种方式更好: 我使用spring 3.0.5: ApplicationContext context = new ClassPathXmlApplicationContext( “application-context.xml”); jmsTemplate = (JmsTemplate) context.getBean(“jmsTemplate”); destination = (Destination) context.getBean(“destination”); _log4j.debug(“ThreadSize in xml\t” + appConfig.getThumbCreatorThreadSize()); 在主线程中方式1: while (countFlag < 0) { try { TextMessage msg = (TextMessage) jmsTemplate .receive(destination); // prehandle ,then give to sub workers. if (msg != null) { _log4j.debug("JMSMessageID:\t" + msg.getJMSMessageID() + "\t" […]

如何在Spring Boot中实现Oracle AQ队列?

我已经了解了如何使用AQ(Streams?)包创建Oracle数据库。 我还在Oracle中创建了一些队列(手动)。 (使用PL / SQL和SQL)。 但是,我很难从Spring建立正确的连接。 以下工作(使用oracle.AQ java包): private final String aqUrl = “jdbc:oracle:thin:@localhost:1521:orcl”; private final String aqUser = “queue_mut”; private final String aqPassword = “******”; private final String aqSchema = “queue_mut”; private final String aqTable = “aq_table1”; private final String aqQueue = “aq_queue1”; @Test public void testManualAQ() throws ClassNotFoundException, SQLException, AQException { Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection […]

无法使用glassfish-resources.xml在Glassfish v3.1.2中创建JMS资源

我正在尝试关于Glassfish服务器上的Action3的第4 章的例子。 我已经在ear包的META-INF目录下打包了下面的glassfish-resources.xml(使用netbeans创建)。 但是,无法部署错误“未创建JMS资源:ShippingRequestQueue”。 请帮我解决这个问题。 更新:我能够从管理控制台部署资源xml文件。 但它不会与ear文件一起部署。

如何将JMS消息“复制”到2个目的地?

我要求客户端发送的单个JMS消息必须可靠地(恰好一次)传递给两个系统。 这两个系统没有启用HA,因此我提出的最佳建议是: 创建客户端发布到的单个队列 设置两个“中间”队列 使用自定义“DuplicatorMDB”,它将从客户端队列中读取消息并将它们发布到同一事务中的两个队列中。 客户端 – > JMSDQ-> DuplicatorMDB-> Q1-> MDB->系统1 \ – > Q2-> MDB->系统2 有这样的现有function吗? 如果一个或两个后端系统都关闭,那么平衡系统以保持系统稳定的正确方法是什么? 应用程序服务器是WebLogic 10。 我无法使用主题,因为在群集主题中会导致过多的消息重复。 如果我们有2个实例,那么主题就是这样: 客户端 – >主题 – > MDB1 @ server1->系统1 | \ – > MDB2 @ server1->系统2 \ —-> MDB1 @ server2->系统1 \ —> MDB2 @ server2->系统2 因此,每条消息将两次发送到System1,两次发送到System2,如果集群中有8台服务器,则每条消息将被发送8次。 这是我真正想避免的…… 最后我有时间测试它,这是我观察到的:集群中的2个节点。 2个JMS服务器:node1上的jms1,node2上的jms2。 分布式主题dt。 具有持久订阅的MDB和jms-client-id = […]

如何在Spring集成中将XML JMS消息发送到FTP

我正在尝试使用active MQ在Spring Integration向FTP发送XML消息。 文本消息在Receiver Queue工作正常,我可以在控制台中打印消息,但是如何将此消息发送到需要存储在本地目录中的XML file中的FTP出站适配器?

需要将标头添加到将发送到IBM MQ websphere的消息

我不确定如何将消息头添加到我们发送给IBM MQ websphere服务器的消息中。 下面是我尝试使用的代码,但我得到例外: 创建与服务器的连接 qMgr = new MQQueueManager(queueMgr, props); int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE; queue = qMgr.accessQueue(queueName, openOptions); message = new MQMessage(); 发送消息 public String sendMessage(){ MQPutMessageOptions pmo = new MQPutMessageOptions(); message.format = MQC.MQFMT_STRING; message.feedback = MQC.MQFB_NONE; message.messageType = MQC.MQMT_DATAGRAM; message.messageId = MQC.MQMI_NONE; message.correlationId = MQC.MQCI_NONE; message.writeString(sMsg); queue.put(message,pmo); } 我尝试使用以下代码添加Header ((TextMessage)message).setStringProperty(header_name,header_value); […]

在Java中处理链中的作业排队

我目前正在java中设计一个关联引擎,它从pdf文件中提取数据,并在关系数据库中关联(必要时提醒警报)结构化数据。 该系统专注于处理pdf文件,包括: 从pdf执行自定义提取的组件。 将有时无序的不清洁数据解析为所需数据结构的组件 一个归一化组件,它将对值进行标准化以进行比较 以及与db接口的组件(其中提取的数据将与其余数据一起插入) 组件应该可以在其他处理链中重复使用,但它们最初都在同一系统上运行。 我认为在组件之间进行某种缓冲是明智的,使用JMS队列是明智的还是会使问题复杂化? 我一直在试验一个简单的linkedblockingqueue对象,但是这个对象必须在组件之间传递,所以它需要一个主组件来驱动我不确定所需的一切,是否有一种标准的方法来解决这个问题?

如何从Qpid JMS(qpid-jms-client-0.11.1.jar)发送/接收来自Azure Service Bus的消息?

我目前正在研究如何使用Qpid JMS(qpid-jms-client-0.11.1.jar)连接到Azure Service Bus。 我创建了一个Demo Java应用程序SimpleSenderReceiver,它使用以下指南( #link1 )连接到已配置的Azure Service Bus。 此代码似乎使用Qpid JMS客户端(版本0.32)的“非常”旧版本。 我现在正试图让它与Qpid JMS的最新稳定版本(qpid-jms-client-0.11.1.jar)一起使用,到目前为止我还没有成功。 通过Qpid JMS 0.11.1的文档#link2 ,您可以看到属性文件中的连接方法与0.32版本中的连接方式不同。 如何在属性文件中设置正确的连接amqp连接字符串 ? 如何设置de Qpid JMS-Azure Service Bus Demo以使用最新的Qpid稳定版本 ? 我一直在运行以下问题: 731 [AmqpProvider:(1):[amqps://example-bus.servicebus.windows.net?transport.connectTimeout=60000]] INFO org.apache.qpid.jms.sasl.SaslMechanismFinder – Best match for SASL auth was: SASL-PLAIN javax.jms.JMSException: Idle timeout value specified in connection OPEN (‘30000 ms’) is not supported. Minimum idle […]

MQDestination覆盖记帐标记值

我试图在我的系统从入站队列收到的消息上设置会计令牌。 我使用以下设置此令牌。 msg.setObjectProperty(JmsConstants.JMS_IBM_MQMD_ACCOUNTINGTOKEN,value) 我在JmsSUpport类中也有以下属性 ((JmsDestination) dest).setBooleanProperty(WMQConstants.WMQ_MQMD_READ_ENABLED, true); ((JmsDestination) dest).setBooleanProperty(WMQConstants.WMQ_MQMD_WRITE_ENABLED, true); ((MQDestination) dest).setMQMDWriteEnabled(true); ((MQDestination) dest).setMQMDReadEnabled(true); ((MQDestination) dest).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ); 由于出站队列是MQDestination,我必须设置上述属性。 现在我观察到我正在设置出站消息的值。 但是当另一个应用程序从MQ读取消息时,它具有Accounting Token的默认值。 这可能是因为MQ以这种方式配置来覆盖值吗? 或者是因为其他应用程序没有正确读取MQ消息? 或者我应该使用任何其他属性来启用会计令牌? 是因为我正在设置((MQDestination)dest).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ); msg被剥夺了MQMD标头?

无法使用资源注释在JBoss 6.1.0中注入JMS QueueConnectionFactory

我花了很多时间来解决JBoss 6.1.0的问题,在我的会话bean中注入JMS连接工厂。 我正在使用JBoss 6.1.0和默认配置文件并在debian中运行它。 剪切我的代码是: @Resource(name=”java:/QueueConnectionFactory”) private QueueConnectionFactory factory 在jboss6 / server / default / deploy / hornetq / hornetq-jms.xml中: true 在部署我的ear-file时,我收到此错误: 既没有指定任何映射名称/ lookup / jndi-name也没有任何ResourceProvider可以处理名为env / java的resource-ref:/ javax.jms.QueueConnectionFactory类型的QueueConnectionFactory 尽管队列工厂在管理控制台中可见,但它无法在我的会话bean中注入队列连接工厂。