📄 ssbconversation.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
namespace SSBExternalActivationRouter
{
class SSBConversation
{
SSBSQLCommandExec cmd = new SSBSQLCommandExec();
SSBMessage _msg;
public void Init(string connectionString)
{
cmd.Open(connectionString);
}
public bool IsTermMessage()
{
bool isTerm = false;
if (_msg.MessageType == @"http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog")
{
isTerm = true;
}
else
{
isTerm = false;
}
return (isTerm);
}
public void ReadMessage()
{
SqlDataReader reader;
_msg = new SSBMessage();
reader = cmd.GetNextMessage();
// RECEIVE conversation_group_id, conversation_handle,
// message_sequence_number, service_name, service_contract_name,
// message_type_name, validation, message_body
// FROM Queue
_msg.ConvGroupId = reader.GetGuid(0);
_msg.SequenceNumber = reader.GetInt64(2);
_msg.ServiceName = reader.GetString(3);
_msg.ContractName = reader.GetString(4);
_msg.MessageType = reader.GetString(5);
_msg.Validation = reader.GetString(6);
if (!reader.IsDBNull(7))
{
SqlBytes sb = reader.GetSqlBytes(7);
_msg.Body = sb.Stream;
}
else
{
_msg.Body = null;
}
reader.Close();
reader = null;
}
public SSBMessage CurrentMessage
{
get
{
return (_msg);
}
}
public bool AreThereMessages()
{
bool retval = false;
SqlDataReader dr;
dr = cmd.PeekAtQueue();
if (dr.GetSqlInt32(0) > 0)
{
retval = true;
}
else
{
retval = false;
}
dr.Close();
dr = null;
return (retval);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -