Coder Social home page Coder Social logo

axonframework / extension-amqp Goto Github PK

View Code? Open in Web Editor NEW
8.0 12.0 8.0 1 MB

Axon Framework extension for AMQP integration to publish and handle Event messages.

Home Page: https://axoniq.io/

License: Apache License 2.0

Java 88.48% Kotlin 11.52%
axon-framework amqp messaging

extension-amqp's Introduction

Axon Framework logo

Axon Framework

Build modern event-driven systems with AxonIQ technology.
Product Description »

Code Samples Repo · Technical Overview · Feature / Bug Request

Axon Framework

Maven Central Build Status SonarCloud Status

Axon Framework is a framework for building evolutionary, event-driven microservice systems based on the principles of Domain-Driven Design (DDD), Command-Query Responsibility Separation (CQRS), and Event Sourcing.

Bootstrap logo

Axon Framework provides you with the necessary building blocks to follow these principles. Examples of building blocks are aggregate design handles, aggregate repositories, command buses, saga design handles, event stores, query buses, and more. The framework provides sensible defaults for all of these components out of the box.

The messaging support for commands, events, and queries is at the core of these building blocks. It is the messaging basics that enable an evolutionary approach towards microservices through the location transparency they provide.

Axon will also assist in distributing applications to support scalability or fault tolerance, for example. The most accessible and quick road forward would be to use Axon Server to seamlessly adjust message buses to distributed implementations. Axon Server provides a distributed command bus, event bus, query bus, and an efficient event store implementation for scalable event sourcing. Additionally, the Axon Framework organization has several extensions that can help in this space.

All this helps to create a well-structured application without worrying about the infrastructure. Hence, your focus can shift from non-functional requirements to your business functionality.

For more information on anything Axon, please visit our website, http://axoniq.io.

Getting started

Numerous resources can help you on your journey in using Axon Framework. A good starting point is AxonIQ Developer Portal, which provides links to resources like blogs, videos, and descriptions.

Furthermore, below are several other helpful resources:

  • The quickstart page of the documentation provides a simplified entry point into the framework with the quickstart project.
  • We have our very own academy! The introductory courses are free, followed by more in-depth (paid) courses.
  • When ready, you can quickly and easily start your very own Axon Framework based application at https://start.axoniq.io/. Note that this solution is only feasible if you want to stick to the Spring ecosphere.
  • The reference guide explains all of the components maintained within Axon Framework's products.
  • If the guide doesn't help, our forum provides a place to ask questions you have during development.
  • The hotel demo shows a fleshed-out example of using Axon Framework.
  • The code samples repository contains more in-depth samples you can benefit from.

Receiving help

Are you having trouble using any of our libraries or products? Know that we want to help you out the best we can! There are a couple of things to consider when you're traversing anything Axon:

  • Checking the reference guide should be your first stop.
  • When the reference guide does not cover your predicament, we would greatly appreciate it if you could file an issue for it.
  • Our forum provides a space to communicate with the Axon community to help you out. AxonIQ developers will help you out on a best-effort basis. And if you know how to help someone else, we greatly appreciate your contributions!
  • We also monitor Stack Overflow for any question tagged with axon. Similarly to the forum, AxonIQ developers help out on a best-effort basis.

Feature requests and issue reporting

We use GitHub's issue tracking system) for new feature requests, framework enhancements, and bugs. Before filing an issue, please verify that it's not already reported by someone else. Furthermore, make sure you are adding the issue to the correct repository!

When filing bugs:

  • A description of your setup and what's happening helps us figure out what the issue might be.
  • Do not forget to provide the versions of the Axon products you're using, as well as the language and version.
  • If possible, share a stack trace. Please use Markdown semantics by starting and ending the trace with three backticks (```).

When filing a feature or enhancement:

  • Please provide a description of the feature or enhancement at hand. Adding why you think this would be beneficial is also a great help to us.
  • (Pseudo-)Code snippets showing what it might look like will help us understand your suggestion better. Similarly as with bugs, please use Markdown semantics for code snippets, starting and ending with three backticks (```).
  • If you have any thoughts on where to plug this into the framework, that would be very helpful too.
  • Lastly, we value contributions to the framework highly. So please provide a Pull Request as well!

extension-amqp's People

Contributors

abuijze avatar azzazzel avatar codedrivenmitch avatar dependabot[bot] avatar github-actions[bot] avatar gklijs avatar lfgcampos avatar mgathier avatar smcvb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extension-amqp's Issues

Replace CI Services for Test Containers and move to JUnit 5

Enhancement Description

The AMQP Extension currently requires a RabbitMQ to run for the SpringAMQPIntegrationTest.
As a consequence, in local environments this is never ran, is we tend to forget to set this up prior to building the project.

The problem was still covered by TravisCI during the build process, but unfortunately TravisCI has suddenly introduced a new "payment" format which doesn't suit our needs.
As ideas arose to move to GitHub Actions were already underway, that solution has been put in place right now.

This however means the SpringAMQPIntegrationTest is not run through the build process either.
As such, it is beneficial to move this test over to start using Test Containers.

On top of that, we should move this project to start using JUnit 5.

Current Behaviour

The SpringAMQPIntegrationTest expects RabbitMQ to run in the background.
Added, tests are ran through JUnit 4.

Wanted Behaviour

  • The SpringAMQPIntegrationTest should use Test Containers.
  • JUnit 5 should be used for testing.

The event processors to read messages from a queue should be of type 'org.axonframework.messaging.StreamableMessageSource'

I upgraded to Axon-framework 4.3. When I tried to start the application an exception occurs.

Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'insuranceUserQueueMessageSource' is expected to be of type 'org.axonframework.messaging.StreamableMessageSource' but was actually of type 'com.xxxx.config.configuration.AxonRabbitConfiguration$1'

Bellow is my configuration:

   @Bean
    public SpringAMQPMessageSource insuranceResidentQueueMessageSource(Serializer serializer){
        return new SpringAMQPMessageSource(serializer){
            @RabbitListener(queues = "${axon.amqp.queue.xxxx.event}")
            @Override
            public void onMessage(Message message, Channel channel) {
                logger.debug("Message received: "+message.toString());
                super.onMessage(message, channel);
            }
        };
    }

and

axon:
    ...
    # consumption configuration for query side
    eventhandling:
        processors:
            xxxx-name:
                source: xxxx-queue-name

I read the documentation in Axon.io and did not find any new examples about this.

Precision on Date Time Utils

Basic information

  • Axon Framework version: 4.5.1
  • JDK version: any
  • AMQP Extension version: master
  • Complete executable reproducer if available (e.g. GitHub Repo): #84

While dependabot tried to upgrade extension Axon Framework version from 4.5 to 4.5.1, some of the tests started to fail. This is due to the changes made on Axon Framework AxonFramework/AxonFramework#1749. Tests should be revisited and fixed.

Steps to reproduce

Rerun #84

Expected behaviour

All tests should pass.

Actual behaviour

Tests are failing.

Introduce an axon-example

Enhancement Description

Following the pattern we have on other extensions (kotlin, mongo, kafka, tracing, etc), we should introduce an amqp-axon-example on this repo where it serves to showcase how to use the extension but also for testing purposes when updating it.

Current Behaviour

There is no example project.

Wanted Behaviour

N/A

Possible Workarounds

N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.