Files
SISBusiness/SISBusiness.RabbitMQ.Module/SISVersion.vb
T
2017-03-26 20:00:03 +02:00

93 lines
4.0 KiB
VB.net

Imports Microsoft.VisualBasic
Imports System
Imports System.Linq
Imports System.Text
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Xml
Imports RabbitMQ.Client
Imports System.Diagnostics
Imports System.Reflection
Imports System.Configuration
Public Module SISVersion
Public Sub SendSISVersion(_XML As System.Xml.XmlDocument, _BasicProperties As IBasicProperties)
Dim _ReplyTo As String = _BasicProperties.ReplyTo
Dim _RoutingKey As String = ""
Dim _Excahnge As String = ""
Dim _MessageBodyId As String = _XML.SelectSingleNode("JsonXML/id").InnerText.ToString
If _ReplyTo.Contains("@") Then
Dim _Data() As String = _ReplyTo.Split(New Char() {"@"})
_RoutingKey = _Data(0)
_Excahnge = _Data(1)
If String.IsNullOrEmpty(_Excahnge) Then
_Excahnge = ConfigurationManager.AppSettings("Exchange_Name")
End If
Else
_RoutingKey = _ReplyTo
_Excahnge = ConfigurationManager.AppSettings("Exchange_Name")
End If
Dim _factory As ConnectionFactory
Dim _connection As IConnection
Dim _channel As IModel
_factory = New ConnectionFactory
_factory.HostName = ConfigurationManager.AppSettings("Factory_HostName")
_factory.UserName = ConfigurationManager.AppSettings("Factory_UserName")
_factory.Password = ConfigurationManager.AppSettings("Factory_Password")
_factory.VirtualHost = ConfigurationManager.AppSettings("Factory_VirtualHost")
_connection = _factory.CreateConnection
_channel = _connection.CreateModel
Dim _IBasicProperties As IBasicProperties = _channel.CreateBasicProperties
Dim _UserId As String = System.Configuration.ConfigurationManager.AppSettings("Factory_UserName")
Dim _CorrelationId As String = _BasicProperties.CorrelationId
Dim uTime As Integer = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
Dim _Expiration As String = "17200000"
Dim _MessageID As String = Guid.NewGuid.ToString
With _IBasicProperties
.UserId = _UserId
.Timestamp = New AmqpTimestamp(uTime)
.MessageId = _MessageID
.Headers = New Collections.Generic.Dictionary(Of String, Object)
.CorrelationId = _CorrelationId
.ContentType = "application/json"
.ContentEncoding = "UTF-8"
With .Headers
.Add("mq3c-message-type", "MQ3CMessage_JSON_RPC")
.Add("mq3clib-version", "1.0")
.Add("mq3clib-appname", "SISBusiness")
.Add("mq3clib-workername", "")
.Add("mq3clib-workerid", "")
.Add("mq3clib-environment", "testing/production")
.Add("mq3clib-appversion", "1.0 RC")
.Add("mq3clib-runtime", "")
.Add("mq3clib-uniquid", Guid.NewGuid.ToString)
End With
End With
Dim _MessageText As String = GetSISVersion(_MessageBodyId)
_channel.BasicPublish(_Excahnge, _RoutingKey, _IBasicProperties, StrToByteArray(_MessageText))
End Sub
Public Function GetSISVersion(_MessageBodyId As String) As String
Dim _Message As String
_Message = "{""jsonrpc"": ""2.0"",""id"": """ + _MessageBodyId
_Message += """,""result"": """
Dim myFileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo([Assembly].GetExecutingAssembly().Location)
_Message += "ProductName: " + myFileVersionInfo.ProductName + "; "
_Message += "FileVersion: " + myFileVersionInfo.FileVersion + "; "
_Message += "ProductVersion: " + myFileVersionInfo.ProductVersion + "; "
_Message += "OSVersion: " + Environment.OSVersion.VersionString + "; "
_Message += "OSPlatform" + Environment.OSVersion.Platform.ToString + "; "
_Message += "OSServicePack: " + Environment.OSVersion.ServicePack + ";"
_Message += """,""MQ3CMessage_JSON_RPC"": {}}"
Return _Message
End Function
End Module