我有以下查询,我需要有人帮助我。我是消息队列的新手,最近开始查看 Kestrel 消息队列。据我了解,线程和消息队列都用于应用程序中的并发,那么使用消息队列比多线程有什么优势?
请帮忙谢谢。
我尝试通过 msg 队列发送整数,但函数 mq_send(mq, &val , sizeof(val), 0); 仅适用于 char 类型指针,因此有什么方法可以将整数发送到具有另一个函数或相同函数的队列。
问候...
嗨,我正在编写一个程序,通过这样的消息队列发送一组字节......
#include <sys/msg.h>
#include <stddef.h>
key_t key;
int msqid;
struct pirate_msgbuf pmb = {2, { "L'Olonais", 'S', 80, 10, 12035 } };
key = ftok("/home/beej/somefile", 'b');
msqid = msgget(key, 0666 | IPC_CREAT);
/* stick him on the queue */
msgsnd(msqid, &pmb, sizeof(struct pirate_msgbuf) - sizeof(long), 0);
Run Code Online (Sandbox Code Playgroud)
上面的例子是来自 beejs 网站的一个与我的类似的简单程序。
然而,我正在做的是发送一个带有这样结构的消息......
struct msg_queue{
long message_type;
char * buffer;
}
Run Code Online (Sandbox Code Playgroud)
现在,在发送 msg_queue 之前,我创建了一些替代缓冲区,其中包含各种信息,包括空字符等。现在当我做这样的事情......
struct msg_queue my_queue;
my_queue.message_type = 1;
my_queue.buffer = "My message";
msgsnd(mysqid, &pmb, sizeof(struct msg_queue) - sizeof(long), 0);
Run Code Online (Sandbox Code Playgroud)
我在接收指针和读取存储在该字符串中的值时没有问题。但是,如果我要做类似的事情......
struct …Run Code Online (Sandbox Code Playgroud) 我正在尝试将消息发送到 C# 中的远程消息队列。
这是我正在使用的路径:
FormatName:Direct=TCP:192.168.0.10\private$\test_in
Run Code Online (Sandbox Code Playgroud)
.Send 方法无一例外地被传递,但远程队列中没有消息出现。奇怪的是,我可以毫无问题地从同一个队列中接收。
远程机器上的队列是非事务性的,就像我本地机器上的代码一样。它还具有“所有人”的“完全访问权限”。
我已经阅读了一些对有类似问题的人的回应,但似乎没有一个解决方案适用于我。我检查了本地机器上的 Outgoing Queues 部分,它们都显示为“已连接”到远程队列,但也表明没有发送任何消息。好像还没试过。
任何想法我的问题可能是什么?谢谢。
编辑:更多信息 - 本地机器是 Windows 8。远程机器是 Windows Server 2012。
编辑:休的回答让我找到了真正的原因。我需要将匿名登录的权限添加到远程队列(“每个人”还不够)。希望这可以帮助某人。
我正在使用rabbitmq,并且可以根据绑定执行所有必需的功能,例如消息路由。
我从未使用过 apache 骆驼,但使用过rabbitmq。
我的问题是camel-rabbitmq 提供了哪些附加功能是rabbitmq 不单独提供的。
我有一个 RabbitMQ 队列,它最初是这样声明的:
var result = _channel.QueueDeclare("NewQueue", true, false, false, null);
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加死信交换,所以我将代码更改为:
_channel.ExchangeDeclare("dl.exchange", "direct");
Dictionary<string, object> args = new Dictionary<string, object>()
{
{ "x-dead-letter-exchange", "dl.exchange" }
};
var result = _channel.QueueDeclare("NewQueue", true, false, false, args);
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我收到错误:
抛出异常:RabbitMQ.Client.dll 中的“RabbitMQ.Client.Exceptions.OperationInterruptedException”
附加信息:AMQP 操作被中断:AMQP close-reason,由 Peer 发起,code=406,text="PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'NewQueue' in vhost'/': received 'longstr' 类型的值 'dl.exchange' 但当前为 none", classId=50, methodId=10, cause=
该错误似乎不言自明,如果我删除队列,当我重新创建它时,我不会收到错误消息,但我的问题是:有没有办法在不删除队列的情况下进行此更改?
我的公司有一个消息传递系统,它以JSON格式发送实时消息,它不是在AWS上构建的,也不会与AWS有任何VPN连接.
我们的团队正在尝试使用AWS SQS接收这些消息,然后将DynamoDB处理JSON消息发送到TSV,然后加载到RDS.
但是,根据FAQ,SQS只能从AWS内部接收消息. https://aws.amazon.com/sqs/faqs/
问:谁可以对消息队列执行操作?
只有AWS账户所有者(或账户所有者已委派权限的AWS账户才能对Amazon SQS消息队列执行操作).
为了使用SQS,我能想到的一种方法是创建一个面向公众的EC2实例,它接收消息并传递给SQS.
我的问题是:
我需要在管理面板中编辑用于电子邮件的模板。有任何想法吗?
我想了几个方法:
这种方式实现的问题是我必须在blade模板中显示php变量,然后将最终代码用作电子邮件的html。我认为,这对 Laravel 来说太难了。
另一个问题是,如果我将 {{ $var }} 存储在 DB 中模板的文本中 - 它会显示为文本,刀片编译器不会处理它。
这种方式将解决 php var 显示的问题,但我仍然不知道如何使用 Mail::send 中的最终代码,因为 Laravel 只允许使用模板的名称,而不是 HTML,据我所知.. .
我考虑以下方式:
$view = view('template')->render();
mail(..., $view, ...);
Run Code Online (Sandbox Code Playgroud)
但是我不想使用它,因为我想使用 Mail::queue() 来查询电子邮件,而且我不知道如何将它与 PHP mail() 一起使用。
感谢大家的回复。
我们开始在后端重新开发中使用 Kafka,并且有一个关于如何构建我们生产和消费的消息的快速问题。
想象一下,我们有一个用户微服务来处理用户的 CRUD 操作。作为一种可能性提出的两种结构是:
1)四个kafka主题,每个操作一个。消息值将只包含执行操作所需的数据,即
topic: user_created
message value: {
firstName: 'john'
surname: 'smith'
}
topic: user_deleted
message value: c73035d0-6dea-46d2-91b8-d557d708eeb1 // A UUID
and so on
Run Code Online (Sandbox Code Playgroud)
2) 用户相关事件的单个主题,消息上有一个属性,描述要采取的操作以及所需的数据,即
// User created
topic: user_events
message value: {
type: 'user_created',
payload: {
firstName: 'john'
surname: 'smith'
}
}
// User deleted
topic: user_events
message value: {
type: 'user_deleted',
payload: c73035d0-6dea-46d2-91b8-d557d708eeb1 // A UUID
}
Run Code Online (Sandbox Code Playgroud)
我赞成所描述的第一个系统,尽管我对 Kafka 的缺乏经验使我无法强烈争论为什么。我们非常重视来自更有经验的用户的任何意见。
我正在尝试创建一个能够发送数据然后接收它们的类.
现在,它只适用于第一次发送/接收,而另一次尝试.send()它将在下面抛出错误.
>Traceback (most recent call last):
File "main.py", line 31, in <module>
zq.send(arr)
File "D:\ITIM\video2\MQCompare\cZMQ.py", line 17, in send
self.socketC.send(data)
File "zmq/backend/cython/socket.pyx", line 636, in zmq.backend.cython.socket.S
ocket.send (zmq\backend\cython\socket.c:7305)
File "zmq/backend/cython/socket.pyx", line 683, in zmq.backend.cython.socket.S
ocket.send (zmq\backend\cython\socket.c:7048)
File "zmq/backend/cython/socket.pyx", line 206, in zmq.backend.cython.socket._
send_copy (zmq\backend\cython\socket.c:3032)
File "zmq/backend/cython/socket.pyx", line 201, in zmq.backend.cython.socket._
send_copy (zmq\backend\cython\socket.c:2920)
File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc.
_check_rc (zmq\backend\cython\socket.c:10014)
raise ZMQError(errno)
zmq.error.ZMQError: Operation cannot be accomplished in current state`
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码如下所示:
import zmq
class ZeroMQ:
def __init__(self): …Run Code Online (Sandbox Code Playgroud) message-queue ×10
c# ×2
ipc ×2
linux ×2
messaging ×2
rabbitmq ×2
amazon-sqs ×1
apache-camel ×1
apache-kafka ×1
c ×1
email ×1
java ×1
laravel ×1
laravel-5 ×1
msmq ×1
php ×1
pointers ×1
python ×1
sockets ×1
zeromq ×1