rebus-org / rebus.azureblobs Goto Github PK
View Code? Open in Web Editor NEW:bus: Azure Blobs-based databus storage for Rebus
Home Page: https://mookid.dk/category/rebus
License: Other
:bus: Azure Blobs-based databus storage for Rebus
Home Page: https://mookid.dk/category/rebus
License: Other
Hi, the 'Microsoft.Azure.KeyVault.Core' package included in this project is deprecated.
Would you kindly upgrade to to a newer package, the package deprecation notice recommends Azure.Security.KeyVault.Secrets?
Enabling SendBigMessagesAsAttachments
together with StoreInBlobStorage
throws an exception that says "The argument must not be empty string"
Our configuration is pretty basic
var dataBusOptions = d.StoreInBlobStorage(configuration.GetConnectionString("AzureStorage"), storageOptions.DataBusContainer);
d.SendBigMessagesAsAttachments(0); // When we approach the limit of Azure Storage Queues we want to transfer to blob storage
d.EnableEncryption(); // Encrypted while stored
if (!storageOptions.AllowAutoCreate)
dataBusOptions.DoNotCreateContainer();
Full exception
Rebus.Exceptions.RebusApplicationException: Could not create (automatic claim check) attachment for outgoing message with ID 83b2a3fe-a812-4874-9da2-41b747691db5
---> System.IO.IOException: Could not upload data to blob named 'data-5c7c7972-b94c-4b53-a249-225b2e69f627.dat' in the 'databus' container
---> Microsoft.Azure.Storage.StorageException: The argument must not be empty string.
---> System.ArgumentException: The argument must not be empty string.
at Microsoft.Azure.Storage.Shared.Protocol.HttpRequestMessageFactory.AddMetadata(StorageRequestMessage request, String name, String value)
at Microsoft.Azure.Storage.Shared.Protocol.HttpRequestMessageFactory.AddMetadata(StorageRequestMessage request, IDictionary`2 metadata)
at Microsoft.Azure.Storage.Blob.Protocol.BlobHttpRequestMessageFactory.AddMetadata(StorageRequestMessage request, IDictionary`2 metadata)
at Microsoft.Azure.Storage.Blob.CloudBlockBlob.<>c__DisplayClass145_0.<PutBlobImpl>b__1(RESTCommand`1 cmd, Uri uri, UriQueryBuilder builder, HttpContent cnt, Nullable`1 serverTimeout, OperationContext ctx)
at Microsoft.Azure.Storage.Core.Executor.Executor.ProcessStartOfRequest[T](ExecutionState`1 executionState, String startLogMessage, CancellationTokenSource timeoutTokenSource)
at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
--- End of inner exception stack trace ---
at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
at Microsoft.Azure.Storage.Blob.CloudBlockBlob.UploadFromStreamAsyncHelper(Stream source, Nullable`1 length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, AggregatingProgressIncrementer progressIncrementer, CancellationToken cancellationToken)
at Rebus.AzureBlobs.DataBus.AzureBlobsDataBusStorage.Save(String id, Stream source, Dictionary`2 metadata)
Request Information
RequestID:
RequestDate:
StatusMessage:
ErrorCode:
--- End of inner exception stack trace ---
at Rebus.AzureBlobs.DataBus.AzureBlobsDataBusStorage.Save(String id, Stream source, Dictionary`2 metadata)
at Rebus.Encryption.EncryptingDataBusStorageDecorator.Save(String id, Stream source, Dictionary`2 metadata)
at Rebus.DataBus.DefaultDataBus.CreateAttachment(Stream source, Dictionary`2 optionalMetadata)
at Rebus.DataBus.ClaimCheck.DehydrateOutgoingMessageStep.DehydrateTransportMessage(OutgoingStepContext context, TransportMessage transportMessage)
--- End of inner exception stack trace ---
at Rebus.DataBus.ClaimCheck.DehydrateOutgoingMessageStep.DehydrateTransportMessage(OutgoingStepContext context, TransportMessage transportMessage)
at Rebus.DataBus.ClaimCheck.DehydrateOutgoingMessageStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Encryption.EncryptMessagesOutgoingStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Pipeline.Send.SerializeOutgoingMessageStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Pipeline.Send.AutoHeadersOutgoingStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Pipeline.Send.FlowCorrelationIdStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Pipeline.Send.AssignDefaultHeadersStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.ServiceProvider.ServiceProviderProviderStep.Process(OutgoingStepContext context, Func`1 next)
at Rebus.Bus.RebusBus.SendUsingTransactionContext(IEnumerable`1 destinationAddresses, Message logicalMessage, ITransactionContext transactionContext)
at Rebus.Bus.RebusBus.InnerSend(IEnumerable`1 destinationAddresses, Message logicalMessage)
at Rebus.Bus.RebusBus.Send(Object commandMessage, IDictionary`2 optionalHeaders)
Version: 0.3.0
I'm trying to give Rebus access to only one container in Azure storage. I'm using a container SAS token for this. I generate the token in PowerShell:
$context = New-AzStorageContext -StorageAccountName '...' -StorageAccountKey '...'
New-AzStorageContainerSASToken -Name '...' -Permission 'rwdl' -Context $context
Rebus connects okay, but when it comes time to write, the Save
method throws an exception:
This request is not authorized to perform this operation.
From debugging, it seems the call to ExistsAsync
is the problem. I guess that whole section is incompatible with a container SAS token, since it tries to create the container if it doesn't exist.
Version: 0.1.0
Hi, I'm having this exact same issue described here
It's happening like twice a day and the blobs are still present in my blob container.
HttpStatusCode: 412
HttpStatusMessage: The condition specified using HTTP conditional header(s) is not met.
ErrorCode: ConditionNotMet
ErrorMessage: ErrorMessage: The condition specified using HTTP conditional header(s) is not met.
RequestId:7063d79d-c01e-000a-31fe-dcb1ae000000
Time:2020-02-06T15:00:07.6518868Z
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.