code: func putEventOnQueue(e contract.Event, ctx context.Context) {
  	LoggingClient.Info("Putting event on message queue")
  	//	Have multiple implementations (start with ZeroMQ)
  	evt := models.Event{}
  	evt.Event = e
  	evt.CorrelationId = correlation.FromContext(ctx)
  	payload, err := json.Marshal(evt)
  	if err != nil {
  		LoggingClient.Error(fmt.Sprintf("Unable to marshal event to json: %s", err.Error()))
  		return
  	}
  
  	ctx = context.WithValue(ctx, clients.ContentType, clients.ContentTypeJSON)
  	msgEnvelope := msgTypes.NewMessageEnvelope(payload, ctx)
  
  	err = msgClient.Publish(msgEnvelope, Configuration.MessageQueue.Topic)
  	if err != nil {
  		LoggingClient.Error(fmt.Sprintf("Unable to send message for event: %s", evt.String()))
  	} else {
  		LoggingClient.Info(fmt.Sprintf("Event Published on message queue. Topic: %s, Correlation-id: %s ", Configuration.MessageQueue.Topic, msgEnvelope.CorrelationID))
  	}
  }
docs: // Put event on the message queue to be processed by the rules engine