标签: message-queue

在Python中使用redis实现推/拉(或队列)

我目前正在开发一个项目,其中有很多可以并行化的任务。我正在使用 redis 来存储数据,并且我还想用它来处理我的作业队列。

首先,我使用了Redis 文档中描述的PubSub 模式。这里的问题是,它将每条消息发送给每个工作人员,我希望每个工作人员一条消息。目前,我通过为每条消息添加状态(在数据库中)来规避这个问题,但这显然不是最佳的。

有没有办法轻松地用合适的模式替换这个 pubsub 模式?

python queue message-queue redis

5
推荐指数
1
解决办法
4298
查看次数

AWS SQS:我们如何使用消息

我想将我的同步 API 之一转换为异步 API。我相信队列是做到这一点的一种方法。就像发布者将消息推送(同步)到队列中一样,该消息将由队列中的消费者 API 消费。

我很想知道消费 AWS SimpleQueueService 消息的正确方法是什么。队列可以调用 API 来将消息传递给它,或者唯一的方法是轮询队列。但我相信轮询会让我们的系统忙于等待,所以最好让队列将消息传递给 API。

有什么可能的方法来做到这一点?

java message-queue polling amazon-sqs amazon-web-services

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

相关 ID 和配送标签有什么区别

我一直在寻找关于这两者之间差异的良好解释,但并没有真正找到。

到目前为止我所知道的是:相关id是一个字符串(Guid已转换为字符串),而交付标签是一个int。每条消息的关联 ID 都是唯一的,并且传递标记仅在通道中唯一(通道是范围)。

好吧……但是目的有什么不同呢?为什么一条消息需要两个标识符?

message-queue rabbitmq

5
推荐指数
1
解决办法
1594
查看次数

Kubernetes 负载均衡如何消费队列消息(SQS 或其他)并将其传递给 pod?

我计划使用AWS SQS从服务器接收消息,然后立即让Kubernetes 负载均衡器使用它们并将每条消息传递到其中一个 Pod。

我最关心的是AWS SQS可以通过什么方式触发负载均衡器。

这可以吗?

如果是的话,以什么方式?

message-queue amazon-sqs amazon-web-services azure-servicebus-queues kubernetes

5
推荐指数
1
解决办法
3085
查看次数

Alt Tab Win32 消息队列和 SetWinEventHook

我正在尝试Alt+Tab使用 Win Event Hook进行检测SetWinEventHook。然而Alt+Tab,即使我有消息泵(我在 Windows 10 上),钩子的回调也永远不会触发

Alt+Tab当我偶然发现这一系列帖子时,我想到了这样处理的想法:

Alt Tab 覆盖 Win32 标识符

SetWinEventHook 没有捕获任何事件

其中描述了使用 WinEventHook 来获取Alt+Tab消息(我不知道它在现代是否有效)。我发现Raymond Chen 的一篇文章详细介绍了它(但是它不再起作用了,我不知道为什么,但它应该起作用。)

Alt+Tab如何在事件回调中获取消息?

编辑:这是我的例子,模仿我大规模做的事情(小程序不起作用)并消除评论中的疑问。这是整个程序加上编译脚本,它显示了我正在尝试执行的操作,但根本不起作用(我做错了什么?上面的 Raymond Chen 程序似乎受其影响)。我使用的是 Windows 10

(编辑,我发现 EVENT_MIN 和 EVENT_MAX 在挂钩中给了我事件,但从来没有 EVENT_SYSTEM_SWITCHSTART 和 EVENT_SYSTEM_SWITCHEND 事件)

编译.bat:

@echo off
if not defined DevEnvDir (
    call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
)

if "%Platform%" neq "x64" (
    echo ERROR: Platform is not "x64" - previous bat call failed.
    exit …
Run Code Online (Sandbox Code Playgroud)

c++ winapi message-queue visual-c++

5
推荐指数
0
解决办法
757
查看次数

Symfony Messenger(消息队列),如何获取队列状态?

我正在使用Doctrine Transport接近Symfony 4.4 Message Queue

如何全面了解队列状态?

我注意到 Doctrine 将队列存储在表中messenger_messages,显然我可以查询该表来获取此信息,但我确信 Symfony 有一种本地方法来获取队列状态。

我想得到:

  • 队列中的消息数
  • 此时正在处理的消息数

message-queue symfony symfony4

5
推荐指数
1
解决办法
2618
查看次数

Celery Worker 如何运行任务中其他地方定义的代码?

我尝试阅读官方文档以及其他 SO 线程,但仍然不清楚 Celery 是如何工作的。

据我了解:

  1. Django 应用程序:Celery 安装在 Django(或任何应用程序)中,其中@shared_task装饰器函数定义要执行的工作。
  2. 消息代理:消息代理从 1. 获取此任务并将其排队。
  3. Celery Worker:一个完全独立的 Celery Worker 接收任务并运行它。该工作人员甚至可以位于完全不同的机器中,只要它可以访问消息代理即可。

那么,最紧迫的问题是:

Celery Worker如何获取@shared_task中定义的代码来运行任务?

基本上,如果 3. 仅使用消息代理进行连接,如何获取 1. 中定义的内容?python 代码是否以字符串形式存储在消息代理中?消息代理项目/记录的数据结构是什么?

python django message-queue celery django-celery

5
推荐指数
1
解决办法
1069
查看次数

多个消费者和生产者连接到消息队列,这在AMQP中是否可能?

我想创建一个能够OCR文本的进程场.我曾考虑使用由多个OCR进程读取的单个消息队列.

我想确保:

  • 队列中的每条消息最终都会被处理
  • 工作或多或少地平均分配
  • 图像将仅由一个OCR进程解析
  • OCR进程不会立即获得多条消息(因此任何其他免费的OCR进程都可以处理该消息).

使用AMQP可以吗?

我打算用python和rabbitmq

python message-queue amqp rabbitmq py-amqplib

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

Java中的分布式数据结构

我将在Java中开发自己的消息队列实现,我需要在多个服务器之间分发队列内容,以便提供可靠性和冗余.

除此之外,我还需要将队列内容保存到文件系统中.

有人可以告诉我什么是最合适的分布式数据结构实现来保存我的队列内容?

注意:该数据结构必须为我提供消息订购工具.这意味着我需要根据他们到达的顺序接收消息.同时在阅读消息时,它应该处于"锁定"状态,以便其他消费者无法读取它,直到第一个消费者完成阅读过程

java message-queue data-structures

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

mq_open:参数无效

我正在尝试为mq_notify 的手册页中的POSIX消息队列运行示例程序.我正在运行它./mq '/bla',它给了我错误mq_open: Invalid argument.

这是示例程序中提供错误的行:

mqdes = mq_open(argv[1], O_RDONLY);
Run Code Online (Sandbox Code Playgroud)

我试过把它换成

mqdes = mq_open("/bla", O_RDONLY | O_CREAT);
Run Code Online (Sandbox Code Playgroud)

但它仍然无效.

这一定很简单,但我无法弄清楚.我究竟做错了什么?

顺便说一句,这是RHEL 5.8.

编辑:我错误的第一个错误.没有O_CREAT,它说"没有这样的文件或目录".我想它试图打开一个不存在的消息队列.使用O_CREAT,我认为无效的参数错误是因为我只有两个参数,你需要四个O_CREAT.

c linux posix message-queue

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