Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS RabbitMQ Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /RabbitMQ/amqp_listenq
This example is the version from Mon, 14th Mar 2021.
Project "amqp_listenq.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
EventHandler Sub Open()
Const hostname = "192.168.2.70"
Const port = 5672
Const exchange = "test"
Const bindingkey = "test"
Const queuename = "test"
Dim conn As New RabbitMQConnectionMBS
If Not conn.NewTCPSocket Then
MsgBox "Failed to create TCP socket"
Return
End If
Dim status As Integer
status = conn.OpenSocket(hostname, port)
If status <> 0 then
MsgBox "Failed to open TCP socket"
Return
End If
Dim r As RabbitMQRPCReplyMBS
r = conn.LoginPlain("/", 0, 131072, 0, "test", "test")
If Failed(r) Then Return
Const channel = 1
Call conn.ChannelOpen(channel)
r = conn.RPCReply
If Failed(r) Then Return
Const consumerTag = ""
Const noLocal = False
Const noAck = False
Const exclusive = False
Dim arguments As Dictionary = Nil
Dim BasicConsumeResult As Dictionary = conn.BasicConsume(channel, queuename, consumerTag, noLocal, noAck, exclusive, arguments)
r = conn.RPCReply
If Failed(r) Then Return
While True
Dim res As RabbitMQRPCReplyMBS
dim envelope as RabbitMQEnvelopeMBS
res = conn.ConsumeMessage(envelope, 0.01)
If res.Type = res.ResponseTypeNormal Then
Log "Delivery: "+Str(envelope.DeliveryTag)
Log "Exchange: "+envelope.Exchange
Log "Routingkey: "+envelope.Routingkey
If BitwiseAnd(envelope.message.properties.flags, RabbitMQBasicPropertiesMBS.kFlagType) <> 0 Then
Log "Content-type: "+envelope.Message.Properties.ContentType
Dim BodyString As String = envelope.Message.Body
Log "Body: "+BodyString
End If
end if
app.DoEvents
wend
r = conn.ConnectionClose
If Failed(r) Then Return
End EventHandler
Function Failed(r as RabbitMQRPCReplyMBS) As Boolean
If r = Nil Then
Return True
End If
Select Case r.Type
Case r.ResponseTypeNone
Break
Case r.ResponseTypeNormal
Return False // okay
Case r.ResponseTypeLibraryException
MsgBox "Library error: "+Str(r.LibraryError)+" "+RabbitMQConnectionMBS.ErrorString(r.LibraryError)
Return True
Case r.ResponseTypeServerException
Dim d As Dictionary = r.MethodDecoded
Dim c As String = d.Lookup("ReplyCode", "")
Dim t As String = d.Lookup("ReplyText", "")
MsgBox "Server error "+c+": "+t
If t = "" Then Break
Return True
end Select
End Function
Sub Log(s as string)
System.DebugLog s
MainWindow.List.AddRow s
End Sub
End Class
Class MainWindow Inherits Window
Control List Inherits Listbox
ControlInstance List Inherits Listbox
End Control
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project
The items on this page are in the following plugins: MBS RabbitMQ Plugin.