标签: message-queue

MessageQueue.BeginReceive 如何工作以及如何正确使用它?

我目前有一个后台线程。在这个线程中是一个无限循环。

这个循环偶尔会更新数据库中的一些值,然后在 MessageQueue 上侦听 1 秒(使用queue.Receive(TimeSpan.FromSeconds(1)))。

只要没有消息进来,这个调用就会在内部抛出一个 MessageQueueException (Timeout),它被捕获,然后循环继续。如果有消息,调用通常会返回并处理消息,然后循环继续。

这会导致很多第一次机会异常(每秒一次,除非有消息要处理)并且这会导致调试输出垃圾邮件,并且当我忘记排除 MessageQueueExceptions 时也会在调试器中中断。

那么 MessageQueue 的异步处理意味着如何正确完成,同时仍然确保,只要我的应用程序运行,队列就会受到监控,并且数据库也会不时更新。当然这里的线程不应该占用100%的CPU。

我只需要大图或对正确完成异步处理的提示。

c# asynchronous msmq message-queue

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

消息队列 makefile 错误:未定义对“mq_open”的引用

尽管我已经-lrt在我的 Makefile 中链接了,正如你在下面看到的,我仍然得到undefined reference to 'mq_open'. 请帮忙!

all:get1 iserv1
get: get1.c
    gcc -Wall -o get1 get1.c -lrt
iserv: iserv1.c
    gcc -Wall -o iserv1 iserv1.c -lrt
clean:
    rm -fr *~ get1 iserv1
Run Code Online (Sandbox Code Playgroud)

linux makefile message-queue

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

JMS/Active MQ - 代理与消费者重新交付

据我了解(http://activemq.apache.org/message-redelivery-and-dlq-handling.html)重新交付可以由消费者或经纪人完成。不过我有一些问题:

消费者的重新交付如何在下面工作?消费者是否缓存来自代理的消息并在本地重新传递?如果消费者在中间终止会发生什么?这样的消息会丢失吗?我认为,只要消费者不承认该消息,就不应该如此。但是在这种情况下,消息在代理上仍然可用吗?

何时使用代理与消费者重新交付有任何指导方针吗?有什么建议吗?

activemq-classic jms message-queue

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

如何跟踪队列作业的进度?

我在 Laravel 中使用数据库队列驱动程序在后台运行作业。

我的一项工作在数据库中创建了给定数量(数千到十万)的记录。我将这个作业的代码包装在一个事务中,以便在作业失败的情况下,不会提交数据库写入。

最初为了跟踪作业的进度,我想我会计算创建的记录数,除以预期记录的总数,然后在 ui 中将其显示为每个作业的百分比,以便用户可以知道他们需要等待多长时间。

这不起作用,因为表在事务期间被锁定。

我想知道是否有人知道如何跟踪排队作业的进度

message-queue laravel-5.1

4
推荐指数
2
解决办法
7890
查看次数

在 RabbitMQ 中使用不同的交换有什么好处?

使用默认(直接)交换与为每个队列创建自定义直接交换有什么区别?

(default exchange) -> queue1
(default exchange) -> queue2
Run Code Online (Sandbox Code Playgroud)

对比

queue1_direct_exchange -> queue1
queue2_direct_exchange -> queue2
Run Code Online (Sandbox Code Playgroud)

在 RabbitMQ 仪表板中,我可以看到,如果我为每个队列使用默认交换,它的消息速率会更高,所以我想知道使用不同的交换是否会提高消息调度的性能......

提前致谢!

message-queue amqp rabbitmq

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

如何制作一个简单的 futures::sync::mpsc::channel 示例?

我正在尝试编写一个简单的期货-rs mpsc 队列用法示例:

extern crate futures; // v0.1 (old)

use futures::{Sink, Stream};
use futures::sync::mpsc;
use std::thread;

fn main() {
    let (tx, rx) = mpsc::channel::<i32>(1000);

    let handle = thread::spawn(move || {
        tx.clone().send(1);
        tx.clone().send(2);
        tx.clone().send(3);
    });

    let mut rx = rx.map(|x| {
        println!("stream: {}", x);
        x * x
    });

    handle.join().unwrap();

    rx.poll().unwrap();
}
Run Code Online (Sandbox Code Playgroud)

但它不会向控制台输出任何内容(我希望它打印stream: 1,stream: 2stream: 3)。我也试图取代rx.poll().unwrap()rx.wait(),但它仍然什么也不输出。而且我在 futures-rs 文档中没有找到任何使用示例。我究竟做错了什么?

future message-queue rust

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

在没有订阅者的队列上发布消息时会发生什么?

这是在一次采访中问我的。

上午 10 点在没有订阅者的队列上发布消息时会发生什么?并且具有适当过滤器的订阅者在上午 10.02 订阅同一个队列。当消息到达代理后订阅者订阅时,消息是否会被传递(我的意思是它是否存储在内存中直到找到订阅者)?什么是默认行为?JMS、STOMP 和 AMQP 标准也不同吗?

jms stomp message-queue amqp rabbitmq

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

基于请求与基于事件的架构

第一季度

我知道基于事件与基于请求/驱动架构之间的根本区别。问题是基于请求的总是同步完成而基于事件的总是异步完成的吗?

Q2

此外,在 API 世界(请求-响应)中,如果请求消息无效,您通常会返回 400 http 代码。幸运的是,在 API 世界中,我们可以执行契约测试,使集成更加健壮。

除了将消息放入错误队列之外,在消息队列中处理此类似问题的最佳方法是什么?发布者服务或消费者服务是否有责任首先获得问题通知?

architecture messaging message-queue event-driven-design request-response

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

如何避免在 Apache Pulsar 中自动删除非活动主题

我有一个应用程序,它在特定主题下向 Pulsar 生成消息,并在完成后关闭该应用程序;同时,不存在阅读此主题的消费者。

过了一会儿,当我创建一个consumer,想把写入的数据读出来的时候,发现我写的topic被Pulsar删除了,所有的数据都丢失了。

如何禁用 Pulsar 中非活动主题的自动删除?

message-queue apache-pulsar

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

如何使用python boto3向本地SQS队列发送消息?

我正在尝试使用https://github.com/roribio/alpine-sqs容器模拟 AWS SQS 功能。

我能够运行 docker 容器并使用终端将消息发送到队列。配置AWS 访问密钥 IDAWS 秘密访问密钥使用空字符串aws configure

我用来向SQS队列容器发送消息的命令是这样的

aws --endpoint-url http://localhost:9324 sqs send-message --queue-url http://localhost:9324/queue/default --message-body "Hello, queue!"
Run Code Online (Sandbox Code Playgroud)

我能够收到该消息,并且可以在浏览器的仪表板中看到它localhost:9235

但是当我尝试使用boto3in发送消息时python,它会引发错误。

回溯(最近一次通话):文件“/home/infomagnus/PycharmProjects/InfoMagnus/workload/app/workload/services/queue_services.py”,第 13 行,在“关于当前纽约时报小说畅销书‘文件’的信息”/home /infomagnus/envs/DSDPenv/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call return self._make_api_call(operation_name, kwargs) File "/home/infomagnus/envs/DSDPenv/lib /python3.7/site-packages/botocore/client.py", line 661, in _make_api_call raise error_class(parsed_response, operation_name) botocore.exceptions.ClientError: 调用 SendMessage 操作时发生错误 (InvalidClientTokenId):包含的安全令牌在请求中无效

不知道为什么即使在使用aws configure.

我正在运行的一切都在我的本地。

这是我的代码:

import boto3
sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None)
queue_url = 'http://localhost:9324/queue/default'
resp …
Run Code Online (Sandbox Code Playgroud)

python message-queue amazon-sqs amazon-web-services boto3

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