Sending a plain string to a MS Message Queue in SSIS
When dealing with an application that will remain nameless, I needed to use SQL Server Integration Services to generate some data, and then put a string into a MSMQ. While trying to get it to work, I went through the MSDN forums; the thread is here. You can follow it along there, but the basic solution is to add “MessageQueueTransactionType.Single” as the transaction type parameter when sending the Message to the MessageQueue.
For reference, here’s my code that worked, but didn’t put anything in the queue until I added that transaction type parameter:
Public Sub Main()
Dim queueMessage As Message
Dim theQueue As MessageQueue
Dim messageStream As IO.StreamWriter
Try
theQueue = New MessageQueue(".\private$\queuename")
Catch
MsgBox("set up queue - " + Err.Description)
Dts.TaskResult() = Dts.Results.Failure
Exit Sub
End Try
Try
messageStream = New IO.StreamWriter(New IO.MemoryStream)
messageStream.Write(Dts.Variables("XMLString").Value.ToString())
messageStream.Flush()
queueMessage = New Message()
queueMessage.BodyStream = messageStream.BaseStream
Catch
MsgBox("set up message - " + Err.Description)
Dts.TaskResult() = Dts.Results.Failure
Exit Sub
End Try
Try
theQueue.Send(queueMessage)
Catch
MsgBox("send message - " + Err.Description)
Dts.TaskResult() = Dts.Results.Failure
Exit Sub
End Try
Dts.TaskResult() = Dts.Results.Success
End Sub