在我的JavaSwing应用程序中,我实现了一个与jms服务器通信的jms客户机。这很好。
当前,当我的应用程序启动时,我创建连接和会话:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
接下来,当我需要向主题发送消息时,我创建了一个主题(发送消息)、一个临时队列(接收回复)、一个生产者(发送消息)和一个消费者(实际读取回复):
Destination destination = session.createTopic ...
MessageProducer producer = session.createProducer ...
Destination tempDest = session.createTemporaryQueue();
MessageConsumer responseConsumer = session.createConsumer(tempDest);
producer.send(msg);
我想知道在这种情况下最好的做法是什么?
当我需要发送消息时,我可以简单地创建所有内容吗?或者最好将目标、消息生产者、消息消费者保存在某个地方并重新使用它。当我决定重新使用这些对象时,有什么特别需要注意的吗?
您应该重用您能够重用的对象。
该连接可能会为您的整个应用程序重新使用,因为它是线程安全的。
会话对象不是线程安全的,在这种情况下,您应该坚持每个线程一个会话。
你可以作弊。使用<code>org.apache.activemq.pool。PooledConnectionFactory,它将设置会话、连接和生产者池。
您仍然需要编写<code>connection.createSession(…),但这只是从池中获取和释放对象。
如果您对并发性有细粒度的控制,实际上重用您的对象可能会更容易,但这种情况很少发生。
我不确定我遇到的问题是概念问题还是技术问题,因为配置错误。 目标是在应用程序容器中托管的Java EE应用程序(特别是WildFly)和独立运行的Java SE应用程序之间发送双向消息,都使用标准JMS协议和主题。我认为这应该是可能的,只要他们都使用相同的经纪人和相同的主题。 因此,我有一个外部 Artemis 实例作为消息代理运行,并在 Java EE 应用程序的单独 Bean 中成功设置了生产
我想使用SpringBoot向ActiveMQ队列发送消息。应用程序应在发送后终止,但仍保持活动状态。 这是我的申请代码: 在没有任何父节点的情况下使用以下依赖项(Maven): 和一行
我有一个监控服务,它在应用程序启动、应用程序关闭和每分钟(滴答)向RabbitMQ发送消息。 启动和勾选事件工作正常。最初编写类时,关闭事件也起作用。 我正在使用spring-boot-starter-amqp 1.3.3。释放 该事件是在DisposableBean接口的destroy方法上触发的。 我也尝试过实现
是否可以在不打开应用程序的情况下发送whatsApp消息,在后台发送,就像使用以下方式发送短信: 如果是,怎么做?我尝试的代码打开了应用程序(意图): 或者是否可以打开应用程序,发送消息到给定的地址,然后关闭它? 谢谢!
我正在spring boot中编写RESTAPI-s。我想确保我的代码对于使用swagger API开发工具(swagger)的前端开发人员是可读的。例如 如果请求成功,响应是一个分支对象,如果失败,响应是只有一个属性(消息)的FindError对象。因此,这两种方法的执行取决于响应。但是swagger UI没有显示响应应该如何显示,因为我使用了“?”作为泛型类型。这是捕捉错误的最佳实践吗?(这种
null 谁能给我一个向RabbitMQ发送消息的标准程序的例子。我正在使用Spring Boot,也可以使用它的特性。