public async Task <IWaitResults> Publish(object message, IMessageMetadata metadata = null)
        {
            var task = _waiter.Start();

            _publisher.Publish(message, metadata ?? MessageMetadata.Empty());
            return(await task);
        }
 public void Publish(object msg)
 {
     _log.Trace("Publishing {@Message} to transport", msg);
     _bus.Publish(msg);
     //for backward compability - a lot of legacy code publish bare messages and expect some results back
     //and new actors \ sagas work only with IMessageMetadataEnvelop
     Publish(msg, MessageMetadata.Empty());
 }
Example #3
0
        private IMessageMetadata SafeGetMetadata(JobDataMap jobDataMap)
        {
            var bytes = jobDataMap[MetadataKey] as byte[];

            try
            {
                return(Deserialize <IMessageMetadata>(bytes, _serializer));
            }
            catch (Exception ex)
            {
                return(MessageMetadata.Empty());
            }
        }
        protected override void OnReceive(object message)
        {
            try
            {
                var messageWithMetadata = message as IMessageMetadataEnvelop;
                if (messageWithMetadata != null)
                {
                    _group.Project(messageWithMetadata.Message, messageWithMetadata.Metadata);
                }
                else
                {
                    _group.Project(message, MessageMetadata.Empty());
                }
            }
            catch (MessageProcessException ex)
            {
                _log.Error(ex, "Handler actor raised an error on message process: {@Message}", message);

                var withMetadata = message as IMessageMetadataEnvelop;
                if (withMetadata == null)
                {
                    var fault = Fault.NewGeneric(message, ex.InnerException, ex.Type, GetSagaId(message));
                    _publisher.Publish(fault);
                }
                else
                {
                    var fault = Fault.NewGeneric(withMetadata.Message, ex.InnerException, ex.Type, GetSagaId(message));

                    var metadata = withMetadata.Metadata.CreateChild(Guid.Empty,
                                                                     new ProcessEntry(Self.Path.Name,
                                                                                      "publishing fault",
                                                                                      "message process casued an error"));

                    _publisher.Publish(fault, metadata);
                }
            }
        }
Example #5
0
 public void Handle(SampleAggregateCreatedEvent msg)
 {
     Handle(msg, MessageMetadata.Empty());
 }
 public virtual void Handle(TMessage msg)
 {
     Handle(new MessageMetadataEnvelop <TMessage>(msg, MessageMetadata.Empty()));
 }