- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Spring Boot 2.1.6 构建 REST API 应用程序。我想在我的应用程序中使用 JMS 消息传递和 Active MQ 包 (org.apache.activemq
)。我有 MyEventController
类,它通过 http 请求接收各种事件。然后,我想将有关事件的信息作为 JMS 消息发送到主题,以便消息使用者使用来自事件的信息更新数据库。
我想在这里使用 JMS 的原因是不保留处理 http 请求的 Spring 线程,并让消费者打开一个单独的线程来对数据库进行潜在的大量耗时更新。但是我想知道 JMSTemplate
是否始终保持一个线程。因为如果为每个 http 请求打开一个新线程,那么该解决方案的可扩展性就不是那么好。
这是我的生产者代码:
@RestController
public class MyEventController {
@Autowired
private DBHandler db;
@Autowired
private JmsTemplate jmsTemplate;
@RequestMapping(method=GET, path=trackingEventPath)
public ResponseEntity<Object> handleTrackingEvent(
@RequestParam(name = Routes.pubId) String pubId,
@RequestParam(name = Routes.event) String event) {
jmsTemplate.convertAndSend("topic1", "info@example.com");
return new ResponseEntity<>(null, new HttpHeaders(), HttpStatus.OK);
}
消费者:
@Component
public class JSMListener {
@JmsListener(destination = "topic1", containerFactory = "topicListenerFactory")
public void receiveTopicMessage(String event) {
// do something...
}
}
最佳答案
JmsTemplate
没有后台线程或异步发送的概念。这是一个类设计,用于简化 java.jms.Session
的使用并将其嵌入到常用的 Spring 概念中,例如使用 @Transactional
的声明式事务管理。
在您的示例中,convertAndSend()
将作为请求处理线程的一部分执行。该方法将阻塞,直到 JMS 代理响应消息已添加到目标队列的应用程序,或者在出现问题时抛出异常,例如队列已满。
关于java - JMSTemplate 生产者是否为每条消息打开一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298228/
我刚开始使用 Gnu Plot 并创建了一些简单的绘图。但是现在我遇到了一个新问题。 输入是这样的 csv 文件: name;n0;n1;n2 Benj;1;3;2 Silv;6;1;2 Steffi
我在 MongoDB 中有 2700 条记录。每个文档的大小约为 320KB。我使用的引擎是wiredTiger,集合的总大小约为885MB。 我的 MongoDB 配置如下: systemLog:
我是一名优秀的程序员,十分优秀!