Я пытаюсь заставить VideoStore.NHibernate
образец NServiceBus (из Github) работать с использованием SqlServerTransport
, а не MSMQ (мы не хотим полагаться ни на MSMQ, ни на RavenDb).
Я переключил этот образец на использование SqlServerTransport, а не MsmqTransport, выполнив следующие действия:
- Добавление соответствующего пакета NuGet для NserviceBus.SqlServer
- Добавление соответствующих строк подключения к каждому приложению / web.config
Когда я запускаю образец с этими новыми настройками, я замечаю, что NServiceBus.ExtensionMethods
статический класс имеет метод SetMessageHeader
, который выдает InvalidOperationException
, когда я переключаюсь на SqlServerTransport:
public static void SetMessageHeader(this ISendOnlyBus bus, object msg, string key, string value)
{
IManageMessageHeaders manageMessageHeaders = bus as IManageMessageHeaders;
if (manageMessageHeaders == null)
throw new InvalidOperationException("bus does not implement IManageMessageHeaders");
manageMessageHeaders.SetHeaderAction(msg, key, value);
}
Означает ли это, что SqlServerTransport
не поддерживает заголовки сообщений?
Есть ли что-нибудь еще, что не поддерживается транспортом SQL Server, что имеет отношение к нашему решению?
Доступна ли матрица функций / транспорта?
Обновлять:
Ладно, может быть, я тут прыгнул с пистолета. https://github.com/Particular/NServiceBus.SqlServer.Samples, похоже, предполагает, что SqlServerTransport поддерживает заголовки сообщений и саги.
Обновление II
Похоже, что использование одной и той же базы данных как для сохранения (NHibernatePeristence), так и для транспорта (SqlServerTransport) вызывает проблемы. Похоже, что использование отдельных баз данных для каждой роли решило проблему.
Я все еще хотел бы знать, есть ли какие-либо недостатки в использовании SqlServerTransport с точки зрения поддержки функций?
IManageMessageHeaders
и, по-видимому, с Google тоже. И, для справки, я только что открыл случайное сообщение из нашей таблицы аудита и посмотрел на заголовки - в нем 25, из которых 5 - наши настраиваемые заголовки, которые мы применяем в нашей системе обмена сообщениями, поэтому я вполне уверен, что это сообщение заголовки поддерживаются на SQL Server. - person Damien_The_Unbeliever   schedule 13.10.2014