【问题标题】:Broker Acknowledgement Rabbit MQ in Micronaut 2.2.1 not woking经纪人确认 Micronaut 2.2.1 中的 Rabbitmq 不工作
【发布时间】:2020-12-11 09:30:40
【问题描述】:

我正在尝试在 Micronaut 中使用 RabbitMQ 获取代理确认。

听众

@RabbitListener
public class ProductListener {

    @Queue(ProductTopicConstants.GET_PRODUCTS)
    public String find(String text) {
        return text.toUpperCase();
    }
}

控制器

@Get(value = "/{text}", single = true)
    public Maybe<String> Find(String text) {
        iproductProducer.find(text).subscribe(item ->{
            System.out.println(item);
        });
        return null;
    }

制片人

@RabbitClient(ProductTopicConstants.FETE_BIRD_EXCHANGE)
public interface IProductProducer {
    @Binding(ProductTopicConstants.GET_PRODUCTS)
    Maybe<String> find(String text);
}

更新 - #1

@RabbitClient(ProductTopicConstants.FETE_BIRD_EXCHANGE)
    public interface IProductProducer {
        @Binding(ProductTopicConstants.GET_PRODUCTS)
        Completable find(String text);
    }

根据文档

客户端方法支持两种返回类型,void 和反应类型。如果该方法返回 void,则该消息将被发布并且该方法将在没有确认的情况下返回。如果返回类型是响应式类型,则会返回一个可以订阅的“冷”发布者。

但在控制器 System.out.println(item); 中,确认永远不会得到。

【问题讨论】:

    标签: java micronaut micronaut-rest


    【解决方案1】:

    您不是在寻找经纪人确认。您正在描述 RPC。 documentation 明确说明了如何设置。据我所知,您似乎在客户端缺少@RabbitProperty(name = "replyTo", value = "amq.rabbitmq.reply-to")

    【讨论】:

    • 如何获得代理确认?
    • 如果你真的只关心确认,那么你应该返回一个Completable。没有发出任何项目只是为了确认,所以你的 println 没有发生是有道理的
    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多