相关疑难解决方法(0)

C#RabbitMQ等待指定超时的一条消息?

RabbitMQ中的解决方案等待带有超时的消息等待带有超时的单个RabbitMQ消息似乎不起作用,因为官方C#库中没有下一个交付方法并且QueueingBasicConsumer被删除,因此它只会在任何地方抛出NotSupportedException.

如何从队列中等待指定超时的单个消息?

PS

它可以通过Basic.Get()来完成,是的,但是,在指定的时间间隔(超额流量,多余的CPU)中拉取消息是不好的解决方案.

更新

EventingBasicConsumer by implmenetation不支持立即取消.即使您在某个时刻调用BasicCancel,即使您通过BasicQos指定预取- 它仍将在帧中获取,并且这些帧可以包含多个消息.因此,单个任务执行并不好.不要打扰 - 它只是不适用于单个消息.

c# rabbitmq

11
推荐指数
1
解决办法
2507
查看次数

等待单个RabbitMQ消息超时

我想向RabbitMQ服务器发送消息,然后等待回复消息(在"回复"队列上).当然,我不想永远等待处理这些消息的应用程序关闭 - 需要超时.这听起来像是一项非常基本的任务,但我找不到办法做到这一点.我现在用py-amqplibRabbitMQ .NET客户端遇到了这个问题.

到目前为止,我已经得到了最好的解决方案是使用轮询basic_getsleep在两者之间,但是这是很丑陋:

def _wait_for_message_with_timeout(channel, queue_name, timeout):
    slept = 0
    sleep_interval = 0.1

    while slept < timeout:
        reply = channel.basic_get(queue_name)
        if reply is not None:
            return reply

        time.sleep(sleep_interval)
        slept += sleep_interval

    raise Exception('Timeout (%g seconds) expired while waiting for an MQ response.' % timeout)
Run Code Online (Sandbox Code Playgroud)

当然还有更好的方法吗?

.net python amqp rabbitmq py-amqplib

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

rabbitmq ×2

.net ×1

amqp ×1

c# ×1

py-amqplib ×1

python ×1