Quarkus Reactive Messaging 不会使用 JMS 连接器和 SmallRye 实现启动单独的线程

问题描述

在我的场景中,应用程序使用 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

我尝试了不同的方法来处理消息,但在每种情况下,我都只有一个工作线程。

日志每次都显示相同的结果:

 [DEBUG]          Thread Thread[ForkJoinPool.commonPool-worker-15,5,main]
 [DEBUG]          Thread Thread[ForkJoinPool.commonPool-worker-15,main]
...

我使用了这个 documentation搜索了很多 ;-)

我的错误是什么? 为什么我只运行一个线程? 如果您需要更多信息,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)