sflpro / notifier Goto Github PK
View Code? Open in Web Editor NEWThe notifications microservice is an independently deployable component intended for sending various types of notifications.
License: Apache License 2.0
The notifications microservice is an independently deployable component intended for sending various types of notifications.
License: Apache License 2.0
Updating the keys is necessary to push maven artifacts to the maven central repository. The keys currently encrypted in the repo have already expired.
When running mvn clean verify -DskipTests=true
the docker-maven-plugin
plugin always runs containers with mysql
and postgresql
instead of starting with test profile
The error from application log
ERROR 6960 --- [ main] o.s.a.r.l.SimpleMessageListenerContainer : Consumer failed to start in 60000 milliseconds; does the task executor have enough threads to support the container concurrency?
This PR on spring-amqp fixes the issue.
Currently, we're using spring boot version 1.5.9 we need to update this to spring boot version 2.
It would be best if we did this update before doing major changes/writing major features. As a significant portion of the newly written code will have to be reworked to comply or use new features offered in Spring Boot 2.
Notifier should support authentication API callers via oath authentication tokens. An example use case is an environment where users are authenticated via an IdP such as Keycloak.
This should be an optionally enabled and configured feature.
Currently, the core of the project, namely maven's core-services-impl
artifact has a direct maven dependency on specific integration providers such as mandrill.
I propose to create an SPI integration module under /infra
. For example infra-plugin-api or infra-plugin-spi. The module should contain interfaces for future SMS, email & push notification plugins.
The dependencies to concrete implementations should be removed from the core module. The integrations themselves should identify themselves and register with the notification processor.
This will also allow in the future easy addition of external plugins by 3rd parties without any modification of the main codebase.
Currently when publishing notifier. That module is also uploaded to maven central which is wrong as it is just to generate correct coverage reports.
It should be externally configurable
Nikita Spring Configuration class contains 4 beans with same qualifier
I am working with version 1.7.0 and set up both Postgres and Rabbit as specified on the readme file. I am getting the following error and as no other documentation is available can someone point me in the right direction.
notifier-api_1 |
notifier-api_1 | Failed to configure a DataSource: no embedded datasource could be configured.
notifier-api_1 |
notifier-api_1 | Reason: Failed to determine a suitable driver class```
EmailNotificationResourceClientImpl,PushNotificationResourceClientImpl,SmsNotificationResourceClientImpl uses different urls when configuring rest client in case when context path set to :
server.servlet.context-path=/*
For example:
EmailNotificationResourceClientImpl => "notification/email/create"
SmsNotificationResourceClientImpl => "rest/notification/sms/create". Also
It should be possible to send data fields through notifications in a manner where the data of the said fields is not saved anywhere in notifier. Examples of usage are password reset, email confirmation tokens.
Notification creation with null property values causes 500 response instead of 406
The README.md file should contain:
Now it is not possible to change value of mail.smtp.starttls.enable
property for smtp transport. It is hardcoded as true
.
It should be possible to mark/label notifications in the API. The labels should be persisted to the database for future reference and analytics.
Sending SMS notifications should support full templating with FTL similar to email templating. The usage via API should be similar to email templating.
javax.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.sflpro.notifier.api.model.common.result.ErrorResponseModel` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 13] (through reference chain: com.sflpro.notifier.api.model.common.result.ResultResponseModel["errors"]->java.util.ArrayList[0])
When sending SMS with Nikita Mobile and it contains Armenian text (or any other text which is not supported by UTF-8) it sends wrong text.
it will be better to change notification.content column type from varchar to text, to except issues like org.postgresql.util.PSQLException: ERROR: value too long for type character
Many products have already discontinued support for JavaSE 8. SonarCloud does not support it anymore, and it can only be enabled by triggering a special old compatibility mode. As part of this issue, the following activities should be carried out:
CreateSmsNotificatonResponse
does not have default constructor which causes deserialization error when using java api client library.
Notifier should support different configurations when sending out emails. There are cases when one application has to use different SMTP credentials when sending out different types of emails or even different SMTP servers.
It should be possible to specify a default configuration for a given notification type and to override it with another configuration when sending out a specific email by providing the overriding configuration ID.
Information about used configurations should be persisted into the database.
Mail creation request should support list of attachments requests
fileName
mimeType
fileUrl
Should be implemented for all supported email channels - SMTP and MailChimp.
For now, we will support only publicly available URLs
Currently, H2 is used to emulate the database during integration tests but in production PostgreSQL and MySQL are supported.
It would be best that during integration tests PostgreSQL is upped via docker flyway is ran to populate the database in a way similar to production deployment. Then the tests can run on an actual database.
The test environment will be much closer to actual production deployment this way.
At the moment one has to deploy both the API and worker projects of the notifier as two separate applications. This is unnecessarily complex to use and configure. Instead, I propose to merge the 2 applications into one and make the whole queueing an optional feature.
A list of ToDos to make the above possible:
notifier.role.processor= true
. Maybe useful for bigger/redundant/scaled setups.A number of integration/unit tests are ignored for long forgotten reasons. Each one has to be evaluated separately and either fixed or deleted.
Description added by Yervand Aghabayan
Amazon SNS integration tests require an access key to be performed during project build. Currently, no such keys are supplied to the Travis build job and hench these tests are ignored in the main development branch.
Suitable keys should be provided and the tests should be enabled.
The Freemarker template resolver adds _subject
and _content
suffixes to provided template name (should only add this if the locale was provided)
Notifer-worker kafka consumer not acking the messages it consumes. Add a configuration parameter to add a manual ack to the consumed messages
To use confluent managed solution, the notifier ms kafka engine should support SASL_SSL
When using templated notification providers, it force to have templates with _subject
and _content
name prefixes, which is not useful when for example trying to send PUSH notification, which not required _subject
.
MySQL Flyway migration scripts are broken. As the project has close to no use on MySQL as of this moment the script can be directly modified.
We need to brainstorm and understand structure for template internationalization.
Support querying sent notifications. This may be useful for viewing emails sent to particular users for historical references, etc..
It should be possible to query notifications based on:
External PR's not able to use secure credentials for Travis scripts and tests
After completing enhancement #28 and the tests being run on PostgreSQL docker. Add an additional integration test run on MySQL so both supported database engines are thoroughly tested in the integration test phase.
This basically means that each integration test will be run twice: once on PostgreSQL and afterward once more on MySQL.
I this the execution should go in the following steps.
Basically, I want to avoid both engines being up at the same time.
A possible problem are conflicts in the junit test report. All should work and be properly reported to sonar. The test cycles should not override each other's results.
The application now only supports Java 8. Codebase should be transferred to Java 11. Also, travis job and dockerfile should be updated to contain java 11.
There are situations when the email notification property values are longer than varchar 255, would be nice to have this values extended to the 32k or even biger.
Can you please specify that what is the URL for accessing swagger? or any other where i can read API's information or documentation?
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.