Usare RabbitMQ in VB.NET

Mattepuffo's logo
Usare RabbitMQ in VB.NET

Usare RabbitMQ in VB.NET

In questo articolo vediamo come connetterci a RabbitMQ in VB.NET.

Non useremo gli stream in questo caso.

Prima di tutto dovete installare la libreria RabbitMQ.Client e potete farlo da NuGET.

Qui sotto un esempio di codice in facciamo tutto insieme (invio e ricezione) per semplicitià:

Imports System.Text
Imports RabbitMQ.Client
Imports RabbitMQ.Client.Events

Module Program
    Sub Main(args As String())
        RabbitTask().GetAwaiter().GetResult()
    End Sub

    Public Async Function RabbitTask() As Task
        Dim factory As New ConnectionFactory With {.HostName = "localhost"}
        Using connection = Await factory.CreateConnectionAsync()
            Using channel = Await connection.CreateChannelAsync()
                Dim nomeCoda As String = "vbnet"

                ' INVIO DATI
                Await channel.QueueDeclareAsync(
                    queue:=nomeCoda,
                    durable:=False,
                    exclusive:=False,
                    autoDelete:=False,
                    arguments:=Nothing
                )

                Const message As String = "Hello World!"
                Dim body As Byte() = Encoding.UTF8.GetBytes(message)

                Await channel.BasicPublishAsync(
                    exchange:="",
                    routingKey:=nomeCoda,
                    body:=body
                )
                Console.WriteLine($" [x] Inviato {message}")

                ' RICEZIONE DATI
                Console.WriteLine("=======")
                Console.WriteLine(" [*] In attesa della ricezione")

                Dim consumer = New AsyncEventingBasicConsumer(channel)
                AddHandler consumer.ReceivedAsync, Async Function(model, ea)
                                                       Dim rcvBody = ea.Body.ToArray()
                                                       Dim rcvMessage = Encoding.UTF8.GetString(rcvBody)
                                                       Console.WriteLine($" [x] Ricevuto {rcvMessage}")
                                                       Return Task.CompletedTask
                                                   End Function

                Await channel.BasicConsumeAsync(
                    queue:=nomeCoda,
                    autoAck:=True,
                    consumer:=consumer
                )

                Console.ReadLine()
            End Using
        End Using
    End Function

End Module

Enjoy!


Condividi

Commentami!