小编Tim*_*ray的帖子

RabbitMQ 客户端 (DotNet Core) 阻止应用程序关闭

我有一段代码,它使用rabbitMQ 来管理一段时间内的作业列表。因此,我有一个连接和一个向 RabbitMQ 服务器开放的通道来对这些作业进行操作。我使用以下内容对作业进行排队:

    public override void QueueJob(string qid, string jobId) {
        this.VerifyReadyToGo();

        this.CreateQueue(qid);
        byte[] messageBody = Encoding.UTF8.GetBytes(jobId);
        this.channel.BasicPublish(
            exchange: Exchange,
            routingKey: qid,
            body: messageBody,
            basicProperties: null
        );
        OLog.Debug($"Queued job {jobId} on {qid}");
    }

    public override string RetrieveJobID(string qid) {
        this.VerifyReadyToGo();

        this.CreateQueue(qid);

        BasicGetResult data = this.channel.BasicGet(qid, false);
        string jobData = Encoding.UTF8.GetString(data.Body);

        int addCount = 0;
        while (!this.jobWaitingAck.TryAdd(jobData, data.DeliveryTag)) {
            // try again.
            Thread.Sleep(10);
            if (addCount++ > 2) {
                throw new JobReceptionException("Failed to add job to waiting ack list.");
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# rabbitmq .net-core

4
推荐指数
1
解决办法
1749
查看次数

标签 统计

.net-core ×1

c# ×1

rabbitmq ×1