⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssbconversation.cs

📁 SQL Server 2005 Service Broker (SSB) is an asynchronous messaging technology built into SQL Server.
💻 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 + -