Spring 工厂创建监听队列的同步消费者
Spring Factory to create synchronous consumers listening to the queue
我是 Spring 大学项目工作的引导和编码新手,我需要一些帮助。
我想创建一个 spring 启动应用程序,它会启动一个工厂 class,它将创建并启动 10 个同步客户端。这些客户端必须不断地监听队列。下面是我的代码。我不确定,如果我在正确的轨道上并且需要一些帮助。我的实施是否正确?如何确保创建了 10 个同步客户端?如何使用标识符来识别哪个消息客户端处理了消息?
Application.java
@SpringBootApplication
public class Application {
@Bean
public MesFactory mesFactory(){
return new MesFactory();
}
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}
public class MesFactory {
private ExecutorService executorService =
Executors.newFixedThreadPool(10);
@PostConstruct
public void build(){
executorService.execute(() -> new MesClient());
}
}
@Component
@EnableJms
public class MesClient {
private static final Log log = LogFactory.getLog(MesClient.class);
@Autowired
private JmsTemplate jmsTemplate;
@JmsListener(destination = "incoming-messages-queue")
public void receive(String message) {
System.out.println("Received <" + message + ">");
doPerformMessage(message);
}
public void doPerformMessage(String message){
// parsing happens here
}
@Bean
ConnectionFactory connectionFactory() {
return new RMQConnectionFactory();
}
@Scheduled(fixedRate = 100000000L)
public void sendMessage() {
String message= "Hi World";
// Coerce a javax.jms.MessageCreator
MessageCreator messageCreator = (Session session) -> {
return session.createTextMessage(message);
};
// And publish to RabbitMQ using Spring's JmsTemplate
jmsTemplate.send("incoming-messages-queue", messageCreator);
}
}
设置启动属性...
spring.jms.listener.concurrency=10
spring.jms.listener.max-concurrency=10
侦听器容器将启动 10 个线程 - 每个都从同一个队列中消费;他们将调用 JMS 侦听器方法。
查看 Spring Boot documentation - Application Properties 并向下滚动到 JMS 部分。
我是 Spring 大学项目工作的引导和编码新手,我需要一些帮助。 我想创建一个 spring 启动应用程序,它会启动一个工厂 class,它将创建并启动 10 个同步客户端。这些客户端必须不断地监听队列。下面是我的代码。我不确定,如果我在正确的轨道上并且需要一些帮助。我的实施是否正确?如何确保创建了 10 个同步客户端?如何使用标识符来识别哪个消息客户端处理了消息?
Application.java
@SpringBootApplication
public class Application {
@Bean
public MesFactory mesFactory(){
return new MesFactory();
}
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}
public class MesFactory {
private ExecutorService executorService =
Executors.newFixedThreadPool(10);
@PostConstruct
public void build(){
executorService.execute(() -> new MesClient());
}
}
@Component
@EnableJms
public class MesClient {
private static final Log log = LogFactory.getLog(MesClient.class);
@Autowired
private JmsTemplate jmsTemplate;
@JmsListener(destination = "incoming-messages-queue")
public void receive(String message) {
System.out.println("Received <" + message + ">");
doPerformMessage(message);
}
public void doPerformMessage(String message){
// parsing happens here
}
@Bean
ConnectionFactory connectionFactory() {
return new RMQConnectionFactory();
}
@Scheduled(fixedRate = 100000000L)
public void sendMessage() {
String message= "Hi World";
// Coerce a javax.jms.MessageCreator
MessageCreator messageCreator = (Session session) -> {
return session.createTextMessage(message);
};
// And publish to RabbitMQ using Spring's JmsTemplate
jmsTemplate.send("incoming-messages-queue", messageCreator);
}
}
设置启动属性...
spring.jms.listener.concurrency=10
spring.jms.listener.max-concurrency=10
侦听器容器将启动 10 个线程 - 每个都从同一个队列中消费;他们将调用 JMS 侦听器方法。
查看 Spring Boot documentation - Application Properties 并向下滚动到 JMS 部分。