我有一个Web应用程序,需要从只能通过消息传递(JMS)访问的外部应用程序获取和显示数据。因此,如果用户在浏览器上提交请求,则同一个HTTP请求线程将必须与消息系统(MQ系列)交互,以便同一个请求线程可以显示从消息系统接收的数据。这里有我可以使用的模式吗?我在网上看到一些模糊的引用资料是这样使用“CorrelationID”的:Msgm=newTextMsg("findDataXYZ");Stringcr_id=m.setCorrelationID(id);sendQueue.send(m).//nowstartlisteningtotheQueueforamsgthatbearsth
在我参与的大多数项目中,异步解决方案的选择一直是很多讨论的来源......每次一个实体bean就足以管理一个队列:我们只需将一条消息(票证)存储在一个表中,然后一个处理cron将队列拆栈。这个简单的解决方案的优点是非常简单,它基于数据库的事务上下文,我们可以在执行期间管理接收到的消息的状态。因此我提出以下问题:1)我们有什么兴趣使用JMS?JMS有什么好处?2)在哪种情况下更喜欢JMS而不是实体bean?感谢您的回复和反馈! 最佳答案 1)WhatinterestwehavetouseJMS?Whatarethebenefitsof
是否可以使用JMSQueue(HornetQ)向特定接收者发送消息?在这么多接收者中,我希望接收者接收到某些消息在Linux操作系统上运行。我们会采纳每条建议。谢谢。 最佳答案 您可以使用Message.setObjectProperty(String,Object)设置消息属性然后让您的消费者使用Session.createConsumer(Destination,String)选择他们感兴趣的消息发件人示例:Messagemessage=session.createMessage();message.setObjectPrope
是否可以通过JMS发送复杂的消息?我可以发送TextMessages、消息等..但是当我尝试通过MessageProducer的send()方法发送我的自定义对象类型MyObject时,我得到编译错误。然后我尝试转换它,我得到像MyObjectcannotbecasttojavax.jms.Message这样的转换异常这是我试过的代码:MessageProducermessageProducer=session.createProducer(destination);messageProducer.send((Message)getMyObject());//wheregetMyObj
我希望我所有的应用程序日志都集中起来(最好是近乎实时的)。我们将使用Log4Appender。我应该使用哪一个:在JMS队列中发送日志事件系统日志/系统日志-ng写入本地文件并使用rsync(每3秒)复制日志对集中式RESTHttp服务执行POST你用的是哪个? 最佳答案 取决于您的要求。记录到队列(如在JMS中)为您提供了最大的选项灵active,因为只要日志消息已写入队列,您的日志操作就可以返回。然后,您可以自由地让另一个进程从队列中取出这些日志消息,并将它们写入您首选的日志存储(数据库、文件系统……)。(轻微的)缺点是您的日志
我被要求设计和实现一个系统,用于从大量设备接收大量自动传感器数据。此数据将定期生成,并以xml格式在httppost中发送到服务器。如果设备没有收到来自服务器的特定确认,它们将继续重新发送相同的数据。在通过事务将数据插入主数据库中的多个表之前,需要对这些数据进行一些潜在的繁重处理,此外,一些数据点需要排队以重新定向到其他外部url。我计划使用带有servlet的Java应用程序服务器(倾向于GlassFish)来接收传入数据。我想实现某种排队机制来临时存储数据,以便返回给传感器的响应不依赖于所有中间处理。单独的独立队列也是数据重定向部分的要求。在做了一些研究之后,两个主要选项似乎是:1
我一直在使用JMS和ActiveMQ。一切都在创造奇迹。我没有使用spring,我也不会。javax.jms.MessageListener接口(interface)只有一个方法,onMessage。在实现中,有可能会抛出异常。如果实际上抛出了异常,那么我说消息没有得到正确处理,需要重试。所以,我需要ActiveMQ稍等片刻,然后重试。即我需要抛出的异常来回滚JMS事务。我怎样才能完成这样的行为?也许在ActiveMQ中有一些我找不到的配置。或者...也许可以取消向消费者注册MessageListener并自己使用消息,循环如下:while(true){//...someadminis
遍历JMS队列并获取其中所有消息的最佳方法是什么?如何统计队列中的消息数?谢谢。 最佳答案 使用JmsTemplatepublicintgetMessageCount(StringmessageSelector){returnjmsTemplate.browseSelected(messageSelector,newBrowserCallback(){@OverridepublicIntegerdoInJms(Sessions,QueueBrowserqb)throwsJMSException{returnCollections.l
我是JMS的新手。我从“helloworld”开始,我在主题上发布来自java应用程序的消息,从客户端(node.jsJavascript)收听它。我经历了thiswikipediaentry,但我有一些问题基于我以前的理论理解。根据我的理解,点对点是队列实现,其中最多可以有一个消费者订阅队列并且可以只被那个消耗。生产者和消费者都不了解对方。在我的案例中,队列托管在消息代理ApacheActiveMQ上。队列可以由生产者在发布消息之前创建(也可以提前从控制台创建)。在发布/订阅模型的情况下,除了我们使用主题而不是队列之外,它几乎与点对点相同。在这个模型中,可以有更多的消费者关注这个话题
我们有一个Java监听器,它从JBossMQ中的队列中读取文本消息。如果我们必须重新启动JBoss,监听器将不会重新连接并再次开始读取消息。我们只是每2分钟在监听器的日志文件中收到一条消息,说它无法连接。在我们的代码或JBossMQ中是否有一些我们没有设置的东西?我是JMS的新手,所以非常感谢任何帮助。谢谢。 最佳答案 您应该在您的客户端代码中实现javax.jms.ExceptionListener。您将需要一个名为onException的方法。当客户端的连接丢失时,你应该得到一个JMSException,这个方法将被自动调用。您