我希望我所有的应用程序日志都集中起来(最好是近乎实时的)。我们将使用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,这个方法将被自动调用。您
我有一个与JMS相关的非常标准的设置-SpringBoot和ActiveMQ。它工作正常,直到我尝试进行简单的集成测试。经过一些调查后,我发现在消费了第一条JMS消息后,Spring上下文和嵌入式代理都关闭了,无论在消费期间是否触发了另一个事件。我能够通过在测试设置中添加useShutdownHook=false连接选项来解决代理问题,即spring.activemq.broker-url=vm://broker?async=false&broker.persistent=false&broker.useShutdownHook=false我正在寻找的基本上是一种强制测试“保持Acti
我有一个带有HornetQ和单个队列的JBoss-6服务器:有不同的消费者(在不同的机器上)连接到此队列,但一次只有一个单个消费者处于Activity状态。如果我关闭这个消费者,消息会立即由其他消费者之一处理。由于我的消息有一些耗时的处理,我希望多个消费者同时处理他们的独特消息。我记得在JBoss的早期版本中有一个类似的设置可以正常工作。在Jboss-6中,消息系统运行良好——除了上述问题。这个问题类似于Aremultipleclientconsumerspossibleinhornetq?,但场景与我的不相似。更新1:如果我关闭(STRG+C)一个消费者,在下一个消费者收到消息之前会
我想在多线程环境中使用QueueSender。QueueSender.send()线程安全吗? 最佳答案 不,MessageProducer/QueueSender不是线程安全的。或者更具体地说:Session不是线程安全的。Session的JavaDoc在第一句话中明确提到了这一点:ASessionobjectisasingle-threadedcontextforproducingandconsumingmessages.并且由于MessageProducer/QueueSender绑定(bind)到Session,您不能同时从
在使用HornetQ(基于standalone-full.xml配置)在JBoss7上配置JMS队列期间,我注意到一个属性“持久”。我浏览了几个来源,其中许多都表示队列始终是“持久的”,这意味着消息将始终被传送,即使潜在的接收者在发送时处于非Activity状态也是如此。JBoss7HornetQ中的这个属性是指临时队列吗?还是这个属性指的是某种非临时非持久队列? 最佳答案 我觉得“持久”这个词更适用于主题而不是队列。持久订阅是订阅者未运行时,订阅者的发布由消息提供者存储的订阅者。一旦订阅者激活,这些存储的消息将被传递给该订阅者。对