Add support for prefetch count in the configuration
Correct support of usernames and passwords in AMQP connections.
You may now add client side certificates to HTTP configurations, with optional passwords for the key. Check out spec/rails_app/config/initializers/event_source.rb
for an example.
SOAP is now supported for HTTP publishing. Make sure you have your message contentType
configured as 'application/soap+xml' in your asyncapi YAML.
SOAP configuration is done by devops in the server block for the HTTP protocol. Check out spec/rails_app/config/initializers/event_source.rb
for an example.
Protocol Bindings for Operations have been moved to a Dry::Struct. This is currently implemented only for HTTP, AMQP bindings are still treated as a hash.
In areas where we differ from the AsyncAPI spec, I have introduced documentation identifying the differences. It can currently be found in hugo/content/docs/async_api_differences.md
.
AMQP workers need some love around worker process hosting - planned for next release.
Connection redirection is complete.
If you would like to have a 'placeholder' URL in the yaml, and put the 'real' url in the ruby configuration file, set the server ref
value to the URL in the yaml and make the host, url, port, or other values what you want them to be for the 'real' server:
Async API YAML:
servers:
production:
url: http://aces-qa/some-random-lookup-uri
protocol: http
description: ACES QA Server
ruby configuration file:
server.http do |http|
http.ref = 'http://aces-qa/some-random-lookup-uri'
http.url = 'http://localhost:6767/'
end
Correct file loading in AsyncApi namespace to use idiomatic ruby conventions and avoid unpredictable gem search paths when requiring files within the library.
EventSource now supports HTTP protocol.
Improvements to the DSL removed references to AMQP protocol-specific objects in the adapter methods. Spec coverage was broadened to verify additional scenarios.
EventSource now supports 'Connection by Configuration'. Using injected configuration settings, EventSource is able to connect and exchange messages with network services.
The interface is based on AsyncAPI specification 2.0.0 which provides a model for representing many common message exchange protocols. The interface applies the Adapter development pattern to pave the way to efficiently add more protocols in the future.
EventSource added network-based service-to-service eventing and message exchange using RabbitMQ.
EventSource now uses a configuration file to set up a customized environment. For
example, the following file loads the AMQP protocol, sets the path where publish and
subscriber files may be found to: app/eventsource
and loads the array: NetworkServices
holding AsyncApi-formatted YAML files with service connection information.
# config/initializers/event_source.rb
config.protocols = %w[amqp]
config.pub_sub_root = Rails.root.join('app', 'event_source')
config.asyncapi_resources =
EventSource::AsyncApi::Operations::Channels::Load
.new
.call(NetworkedServices)
.value!