0

私のシナリオでは、アプリケーションは 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 つしか実行されないのはなぜですか? さらに情報が必要な場合は、お知らせください。

4

0 に答える 0