[英]How to use RabbitMQ in VB.NET?
沒有找到有關如何在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#中,Consumer看起來像:
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
創建消費者沒有問題,但是事件沒有反應
是否有某種解決方法,請手動在VB中使用RabbitMQ,或者我只是缺少一些東西?
問題實際上似乎是如何在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方法中,您將事件發送者和args強制轉換為object
和EventArgs
。 可以將參數BasicDeliverEventArgs
為這些類型,因為所有內容都是對象,而BasicDeliverEventArgs
繼承自EventArgs
。 但是在這種情況下,您需要進行更具體的轉換,以便可以訪問所需的屬性。
Private Sub ConsumerReceived(ByVal sender As IBasicConsumer, ByVal e As BasicDeliverEventArgs)
Dim Test = ""
End Sub
最簡單的事情(如果有的話)只是切換到C#。 這使代碼示例更易於使用。 我堅持了一段時間。 不知道為什么-很快就適應了C#,我很快就開始喜歡它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.