gpt4 book ai didi

c# - 如何在 VB.NET 中使用 RabbitMQ?

转载 作者:行者123 更新时间:2023-11-30 21:37:14 24 4
gpt4 key购买 nike

没有找到关于如何在 VB 中使用 RabbitMQ 的任何东西

可以对某些扩展进行更改,使其看起来像 C#

Dim factory = New ConnectionFactory() : With factory
.HostName = "localhost"
End With

Using connection = factory.CreateConnection()
Using channel = connection.CreateModel()

...
...

End Using
End Using

而且我已经检查过发送消息或声明队列没有问题,但是消费者的使用呢?

在 C# 中,消费者看起来像:

var consumer = new EventingBasicConsumer(channel);

consumer.Received += (model, ea) =>
{
var body = ea.Body;

...
...

channel.BasicAck(ea.DeliveryTag, false, false);
};

但这在 VB 中应该如何显示?已经尝试过这种东西:

Dim consumer As EventingBasicConsumer = New EventingBasicConsumer(channel)
AddHandler consumer.Received, AddressOf ConsumerReceived

Private Sub ConsumerReceived(ByVal sender As Object, ByVal e As EventArgs)
Dim Test = ""
End Sub

消费者创建没有问题,但对事件没有反应

是否有某种变通方法,手册如何将 RabbitMQ 与 VB 一起使用,或者我可能只是遗漏了什么?

最佳答案

真正的问题似乎是如何在 VB.NET 中将匿名函数指定为事件处理程序。这与为什么未调用事件处理程序不是同一个问题。

但我想你要找的可能是这个:

AddHandler consumer.Received, Sub(consumer as IBasicConsumer, ea as BasicDeliverEventArgs)
Dim body = ea.Body
'...
channel.BasicAck(ea.DeliveryTag, false, false)
End Sub

或者您可以照原样做,将事件处理程序放在一个单独的方法中。 (我倾向于它只是因为它更容易阅读和遵循。)

在您的 VB.NET 方法中,您将事件发送者和参数转换为 objectEventArgs。参数可以转换为这些类型,因为一切都是对象并且 BasicDeliverEventArgs 继承自 EventArgs。但在这种情况下,您希望进行更具体的转换,以便您可以访问所需的属性。

Private Sub ConsumerReceived(ByVal sender As IBasicConsumer, ByVal e As BasicDeliverEventArgs)
Dim Test = ""
End Sub

最简单的事情(如果可以的话)就是切换到 C#。这使得代码示例更易于使用。我坚持使用 VB.NET 一段时间。不知道为什么 - 很快就适应了 C#,我很快就喜欢上了它。

关于c# - 如何在 VB.NET 中使用 RabbitMQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com