Laravel 提供了一项名为“队列”的功能,您可以使用服务(beanstalkd、Amazon SQS、Rabbit MQ)将长时间运行的任务委托给后台工作人员。一个简单的例子是通过该排队作业发送电子邮件,而不是从控制器发送电子邮件。所述排队作业能够识别任务是否完成,或者如果失败,则重试一定次数。
Express (NodeJS) 与此功能等效的功能是什么(如果存在的话)?我尝试通过直接查找服务上的资源(例如 RabbitMQ)来研究该主题,并且我只找到了像这样的教程,但仅通过阅读它,看起来他们正在从头开始实现这个东西。
也许我的期望是这里出了问题,但是是否有相当于为排队作业编写业务逻辑代码并分派它的功能?
首先,我将首先说明这个问题是Mosquitto的改进,不使用桥配置将消息传播到 AWS IoT,因此在该问题上也可以找到很多上下文和日志,但我决定开始一个新的,因为我我猜我发现了实际问题的真正症状,我更喜欢单独处理它以避免与其他可能的问题混淆:
Mosquitto ( /var/log/mosquitto/mosqutto.log) 日志文件实际上已被禁用,并且唯一可用的日志来自/var/log/syslog但是,当我们启用它们并发出 a 时cat mosquitto.log|grep bridge,出现了一些相关消息:
1.- Bridge local.bridgeawsiot doing local SUBSCRIBE on topic #
这表明所有主题都在桥接
2.- Connecting bridge awsiot (myEndpoint.iot.us-east-1.amazonaws.com:8883)
这表明它正在使用正确的端点
3.- Outgoing messages are being dropped for client local.bridgeawsiot.
这让我很担心,因为我真的不知道为什么会这样,但似乎是问题的明显症状,但经过几次搜索后我发现:
“当内部消息队列已满时,会显示消息“正在删除传出消息”,所以我猜消息只是被排队,但实际上并未发送到 AWS IoT。
所以我的问题是:
相关资料:
Version: 1.4.14-0mosquitto1~jessie2
OS: Debian GNU/Linux 9.1 (stretch)
Run Code Online (Sandbox Code Playgroud) 谁能解释一下Android中的消息队列是什么?它是正在运行的进程列表吗?我找不到很好的来源来解释它。
我问这个问题是因为我正在阅读有关视图类的方法帖子。
添加到 API 级别 1 布尔值帖子(可运行操作)
导致 Runnable 添加到消息队列中。可运行程序将在用户界面线程上运行。
先感谢您。
我有一个应用程序可以同时从多个用户接收三种类型的消息,我正在使用 3 个队列/消费者和 3 个交换器处理它。我的问题是,当队列中有来自一个用户的数千条消息时,其他用户正在等待。
我正在寻找一种解决方案来并行执行每个用户的作业。我可以为每个用户动态创建队列,但这不是一个好的解决方案,因为会有数百个队列和使用者。如何自动删除空闲的消费者/队列。我可以以任何方式使用 celery 和 redis 来解决这个问题吗?
我是 Azure 服务总线的新手,我发现我需要不断轮询队列消息才能接收它们。但是,我希望 Queue 将消息推送到客户端的某种侦听器,而不必轮询消息。
我已经读到轮询在 Azure 服务总线中是可选的,但我找不到没有它如何接收消息。
如果可以的话请帮忙。谢谢
在python中,在两个s之间建立单向通信的惯用方法是什么threading.Thread,将它们称为 threada和 thread b。
a是生产者,它不断地产生价值以供b消费。
b是消费者,它读取 生成的一个值a,用协程处理该值,然后读取下一个值,依此类推。
插图:
q = very_magic_queue.Queue()
def worker_of_a(q):
while True:
q.put(1)
time.sleep(1)
a = threading.Thread(worker_of_a, args=(q,))
a.start()
async def loop(q):
while True:
# v must be processed in the same order as they are produced
v = await q.get()
print(v)
async def foo():
pass
async def b_main(q):
loop_fut = asyncio.ensure_future(loop(q))
foo_fut = asyncio.ensure_future(foo())
_ = await asyncio.wait([loop_fut, foo_fut], ...)
# blah blah blah
def …Run Code Online (Sandbox Code Playgroud) 当我查看机器人操作系统(ROS)的教程时,我发现大多数示例代码将发布者的队列大小设置为较大的值,例如1000。我认为这会导致节点失去实时响应。
人们出于什么目的将其设置为那么大的值?
我曾经在一次采访中被问到,如何处理消息队列中无序传入的消息。已经有一段时间了,我还没有找到明确的答案,我想知道该领域的专家是否可以帮助我回答这个问题,以满足我自己的好奇心。
据我了解,某些消息队列提供一次性和 FIFO 保证。我还知道流系统中事件时间和处理时间的概念。例如,在像 Kafka 这样的基于日志的消息队列中,由于偏移量和消息持久性的存在,混合排序可能不太可能发生(我可能是错的)。我还考虑过使用时间戳,要求每个消息发送者在发送之前记录消息的时间,但由于时钟偏差,这充满了不一致。
考虑到所有这些,我想知道如何解决 AMQP、JMS 或 RabbitMQ 等传统消息传递系统中的混合排序问题,其中十几个物联网设备可能正在发送消息,而我作为消费者希望以正确的顺序协调它们。
distributed-computing message-queue distributed-system apache-kafka
我正在我的 Node js 项目中实现 sqs。我正在做的是在 SQS 中发送 msg 并接收它。但是当我收到它只是 ResponseMetadata 对象
"ResponseMetadata": {
"RequestId": "8659872b-10f0-57b6-9d57-d1852aba1a64"
}
Run Code Online (Sandbox Code Playgroud)
没有消息对象作为响应。我该怎么办?我有很多可能性,例如更改参数值等,但没有任何效果。
我的代码
const AWS = require('aws-sdk');
AWS.config.update({ accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, region: 'eu-west-1' })
const sqs = new AWS.SQS({apiVersion: '2012-11-05'});
onst queueUrl = "https://eu-west-1.queue.amazonaws.com/******/test-queue";
Run Code Online (Sandbox Code Playgroud)
发送信息
let params = {
MessageBody: 'Hello world!',
MessageAttributes: {
"Title": {
DataType: "String",
StringValue: "The Whistler"
},
"Author": {
DataType: "String",
StringValue: "John Grisham"
},
"WeeksOn": {
DataType: "Number",
StringValue: "6"
}
},
QueueUrl: queueUrl,
DelaySeconds: 0
};
sqs.sendMessage(params, …Run Code Online (Sandbox Code Playgroud) 我有一个订阅者将数据推送到队列中。现在消息看起来像这样
{
"Content": {
"_id" ""5ceya67bbsbag3",
"dataset": {
"upper": {},
"lower": {}
}
}
Run Code Online (Sandbox Code Playgroud)
现在可以使用相同的内容 id 推送新消息,但数据将不同。因此,我想删除具有相同 id 的旧消息或替换那些 id 相同的消息并仅保留最新消息。
我还没有在rabbitmq 中找到直接的解决方案。请指导我如何做到这一点?
我已经浏览了一些帖子。
message-queue ×10
node.js ×3
rabbitmq ×2
amazon-sqs ×1
amqp ×1
android ×1
apache-kafka ×1
azure ×1
celery ×1
express ×1
javascript ×1
mosquitto ×1
mqtt ×1
paho ×1
post ×1
publisher ×1
python ×1
queue ×1
ros ×1
subscriber ×1
task-queue ×1