我是Spring Boot的新手,併爲我的大學項目工作編碼,我需要一些幫助。 我想創建一個彈簧啓動應用程序,它啓動一個工廠類,它將創建並啓動10個同步客戶端。這些客戶端必須不斷監聽隊列。以下是我的代碼。我不確定,如果我在正確的軌道上,需要一些幫助。我的實現是否正確?我如何確保創建10個同步客戶端?我如何使用標識符來確定哪些消息客戶端處理了消息?Spring Factory創建隊列中的同步消費者
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);
}
}
目前還不清楚你的意思是「同步客戶端」。該代碼將創建單個異步使用者。 –
我想創建10個偵聽同一隊列的消息客戶端來處理消息。一旦消息被消息客戶端使用,那麼它應該同步。 – Matwfo