我一直在嘗試創建一個基於奧斯汀示例的示例應用程序。首先,我有一個404樣本,我通過調整App.Config中的connectionString來修復它(我忘了那個,我的壞)。 現在我創建了第二個接收器,它應該將消息發送到服務總線隊列而不是Azure表。 啓動SampleApplication和EventSourceSimulator時,前兩個消息似乎正確傳遞,但第三個消息顯示404錯誤。 以下是錯誤和我的接收器類的屏幕截圖。如果您需要更多信息來幫助我,請告訴我。 由於提前,StreamInsight奧斯汀示例服務總線404
public class ServiceBusQueueSink<TEvent>
{
readonly QueueClient _queueClient;
readonly NamespaceManager _namespaceManager;
readonly string _connectionString;
readonly string _queueName = "DeviceErrorsQueue";
readonly string _errorType;
readonly bool _storeCtis;
ServiceBusQueueSink(string errorType, bool storeCtis)
{
_errorType = errorType;
_storeCtis = storeCtis;
// Configure Queue Settings
QueueDescription qd = new QueueDescription(_queueName);
qd.MaxSizeInMegabytes = 2048;
qd.DefaultMessageTimeToLive = new TimeSpan(0, 1, 0);
// Create the queue if it does not exist already
_connectionstring = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
_namespaceManager = NamespaceManager.CreateFromConnectionString(_connectionString);
if (!_namespaceManager.QueueExists(_queueName))
{
_namespaceManager.CreateQueue(_queueName);
}
_queueClient = QueueClient.CreateFromConnectionString(_connectionString, "DeviceErrorsQueue");
}
/// <summary>
/// Write each received event into the service bus queue.
/// </summary>
/// <param name="e">Event to write.</param>
public void OnNext(PointEvent<TEvent> e)
{
bool send = false;
if (e.EventKind == EventKind.Cti)
{
if (_storeCtis)
send = true;
else
send = false;
}
else
send = true;
if (send)
{
BrokeredMessage message = new BrokeredMessage(e);
message.Properties["ErrorType"] = _errorType;
_queueClient.Send(message);
}
}
/// <summary>
/// Static method that returns a new Service Bus Queue sink observer.
/// </summary>
/// <param name="storageConnection">Service Bus Queue connection string.</param>
/// <param name="errorType">Type of error to be saved in properties of brokeredmessage.</param>
/// <param name="storeCtis">Flag specifying whether to also persist CTI events.</param>
/// <returns></returns>
public static IObserver<PointEvent<TEvent>> CreateObserver(string errorType, bool storeCtis)
{
var res = new ServiceBusQueueSink<TEvent>(errorType, storeCtis);
return Observer.Create<PointEvent<TEvent>>(e => res.OnNext(e));
}
更新:我沒有看到在管理門戶在服務總線隊列什麼,所以我想沒有到達那裏。
我確實在這個地址有一個HttpSource,我保持它與Sample中的一樣,並且使用azureTableSink一切都很完美。這確實是我的水槽問題,但我找不到。在查看我的存儲空間時,我看到很多表格,但沒有用於該帳戶的可登錄。我有一個WADWindowsEventLogsTable和siXWADLogsTable,但它們不包含任何有用的信息。 – hhoud
這是我的一個愚蠢的錯誤,但你的回答讓我想到了正確的方向。 我無法使用StreamInsight Even Flow調試器,但我修復了它(我沒有正確配置文件...),然後發現我忘記了在部署時將Microsoft.ServiceBus.dll添加到包中... – hhoud