xml-broker's Introduction
xml-broker -- XML-based Event-Broker ------------------------------------ This project implements a event-driven, service-oriented example-project. Services will register for certain events at a centralized broker. Upon recieving events, the broker will forward these events to all matching services via HTTP/Post-Request. Inside this repository you will find an implementation of the broker and collection of some example projects to get started with programming clients and services that may register with the broker. Since this project has been ported to Maven, building should be quite easy. Just download a current Maven version from http://maven.apache.org/download.html (>=3.0.0), extract the files to your favorite directory and add Mavens bin/ directory to your PATH. Navigate to the root-directory of your local copy of the project and run "mvn package". All sub-projects will be compiled to jar / war files located inside the corresponding <sub-project>/target/ directory. For Eclipse "Maven Integration for Eclipse" (m2e) and "Maven Integration for WTP" should both be installed to make Eclipse Maven aware. After Eclipse is setup proparly, add the projects by using "Import..." --> "Maven" --> "Existing Maven Projects". Enter the path to your local copy of this project and you should see all subprojects listed. Have fun =)
xml-broker's People
Forkers
kaiuwehornxml-broker's Issues
text/plain in get-Requests to Apps
There seems to be a problem with some of the dynamic web-pages generated from the example apps. In most cases a request will have the type text/plain (which will not be rendered correctly by browsers) even though setContentType("text/html") is used.
Dynamic service registration
Allow services to register and unregister for events dynamically (while the servlet is running).
Possible ways:
- inline -- register and unregister are events the broker itself subscribed for
- restful -- use html put / delete
Restful is preferred since this way other services may not subscribe to the registration events and thus gain information about other services.
XPath
Need a secure way to filter Expressions. (Could be misused to load external XML files etc..)
Error in XPathFilter -> deliver (should proxy recieved domtree)
Add ant-files
Write build-scripts using ant for all contained subprojects
CDATA
The Broker should not remove CDATA-Tags from given xml document.. this will most certainly lead to parse-errors at the services if not handled. A passable way to fix this is to use MultiXMLRootFilter.
Also the XPathFilter needs to be fixed.. it should also recieve the String representation of the given Document. The query should only contain a filter-expression meaning for "//event[@id=1]" it should be written as "@id=1" returning the original string if the query would return an element (this should be a bit faster, too ^^)
Store service-registration through uri
PUT and DELETE should work with
http:///<...>/XMLBroker/
the uri should be independant of eventtype etc!
(need to rework Service-Map)
Mulithreading
Currently Post-Requests are handled as following:
/-> Deliver1
Req1 --> Parser --> Filter --> ... --> HttpDelivery --> Deliver2
x-> Deliver3
Req2 --> Parser --> Filter --> ... --> HttpDelivery --> Deliver4
-> Deliver5
This way every Stage needs to be fully thread-safe. One way to loosen this Requirement would be to multiplex events into a single stream (BlockingLinkedList?). Some Benchmarks are needed to decide for the right design
Persistend HTTP-Connections
Add a pool for connections that should be held open for a long time. This should be helpful for high-throughput.
During registration a service should be able to give a hint, if it supports streaming xml-events and allows the connection to stay open for a (long) period of time.
e.g <HTTPService event="log" url="http://..." streaming="true"/>
Fix NettyHTTPDeliverer
Delivery through netty is broken unreliable. The Speed-Test shows that under high pressure netty will drop some events (most likely this has to do with wrong synchronisation in the delivery class!).
Statistics
Need a way to measure throughput etc... Currently a combination of a Stream-injection tool (starts the brokers parser directly without the overhead of sending the file beforehand) and a service that collects all messages is used to generate a simple graph + table... need a way to automate this progress...
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.