The following Visual Basic code example demonstrates sending and receiving scenarios using the Navision Communication Component and the Navision MS-Message Queue bus adapter.
The code is as follows:
Option Explicit
Dim WithEvents CC2 As CommunicationComponent
Dim MQBA As MSMQBusAdapter
Dim OutMsg As OutMessage
Dim ReplyMsg As OutMessage
Dim InMsg As InMessage
Dim DOM As DOMDocument30
Private Sub CC2_MessageReceived(InMessage As Object)
Set InMsg = InMessage
DOM.Load InMsg.GetStream
If InMsg.ExpectReply Then
Set ReplyMsg = InMsg.CreateReply
If ReplyMsg Is Nothing Then
MsgBox "Reply message could not be created."
Else
DOM.Load FileToSend.Text
DOM.Save ReplyMsg.GetStream
ReplyMsg.Send 2000
End If
MsgBox "Message received from ComCom2. Reply sent."
Else
MsgBox "Message received from ComCom2"
End If
End Sub
Private Sub Form_Initialize()
Set CC2 = New CommunicationComponent
Set MQBA = New MSMQBusAdapter
Set DOM = New DOMDocument30
End Sub
Private Sub Form_Load()
On Error Resume Next
If MQBA Is Nothing Then
MsgBox "MQBA could not be created."
Resume
End If
If CC2 Is Nothing Then
MsgBox "ComCom2 could not be created."
Resume
End If
CC2.AddBusAdapter MQBA, 1
End Sub
Private Sub Open_Receive_Q_Click()
MsgBox "Opening: " + Txt_ReceiveQ.Text
MQBA.OpenReceiveQueue Txt_ReceiveQ.Text, 1, 0
End Sub
Private Sub Open_ReplyQ_Click()
MsgBox "Opening: " + Txt_ReplyQ.Text
MQBA.OpenReplyQueue Txt_ReplyQ.Text, 1, 0
End Sub
Private Sub Open_WriteQ_Click()
MsgBox "Opening: " + Txt_WriteQ.Text
MQBA.OpenWriteQueue Txt_WriteQ.Text, 1, 0
End Sub
Private Sub Simple_Send_Click()
Dim SentCorrectly As Integer
Set OutMsg = CC2.CreateoutMessage("Message queue://")
DOM.Load FileToSend.Text
DOM.Save OutMsg.GetStream
SentCorrectly = OutMsg.Send(2000)
End Sub
Private Sub Sync_Send_Click()
Dim SentCorrectly As Integer
Set OutMsg = CC2.CreateoutMessage("Message queue://")
DOM.Load FileToSend.Text
DOM.Save OutMsg.GetStream
Set InMsg = OutMsg.SendWaitForReply(2000)
If InMsg Is Nothing Then
MsgBox "InMessage is empty!"
Else
DOM.Load InMsg.GetStream
DOM.Save ReadFileSave.Text
InMsg.CommitMessage
End If
End Sub