私のシナリオでは、アプリケーションは CDI-Producer を使用して JMS キューからメッセージを読み取ります。
@Produces
public ConnectionFactory connectionFactory() {
JmsFactoryFactory ff;
JmsConnectionFactory factory;
try {
// Get a new JMSConnectionFactory
ff = JmsFactoryFactory.getInstance(JmsConstants.WMQ_PROVIDER);
factory = ...
私は quarkus-smallrye 実装を使用しています。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-reactive-messaging-amqp</artifactId>
</dependency>
<dependency>
<groupId>io.smallrye.reactive</groupId>
<artifactId>smallrye-reactive-messaging-jms</artifactId>
<version>2.7.0</version>
</dependency>
コネクタは非常に単純に見えます。
@Incoming("ORDER")
public CompletionStage<Void> consume(Message<String> message) {
return CompletableFuture.runAsync(() -> processMessage(message)).thenRun(message::ack);
// used a Runnable, ...
}
構成:
mp.messaging.incoming."ORDER".connector=smallrye-jms
メッセージを処理するさまざまな方法を試しましたが、いずれの場合もワーカー スレッドは 1 つしかありませんでした。
ログには毎回同じ結果が表示されます。
[DEBUG] Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
[DEBUG] Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
[DEBUG] Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
[DEBUG] Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
[DEBUG] Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
...
私はこのドキュメントを使用して、たくさん検索しました;-)
私の間違いは何ですか?スレッドが 1 つしか実行されないのはなぜですか? さらに情報が必要な場合は、お知らせください。