Creating a Cassandra Connection Pool with JBoss - jboss

I'm new to Cassandra and JBoss, and am trying to create a connection pool. I've searched everywhere and found bits and pieces of information, but I'm still missing something.
I'm not clear on what I need in my standalone file, within the driver element. What should I specify for driver-class and xa-datasource-class?
And, in module..xml, what path should I be using in the resource-root element?
I have these 2 jar files - are they correct?
cassandra-driver-core-2.0.2.jar
cassandra-driver-dse-2.0.2.jar
I'm able to open a connection and execute cql queries from a standalone Java class, but now I need to create a connection pool in JBoss. Any help would be appreciated. Thanks.

Cassandra driver, itself maintains connection pool (atleast with datastax jars), which is configurable, in the run-time,
and also can be configured while making the session.
On top of that cassandra driver even lets you read connection pool status, if you have chosen to do that. So you can create your own monitoring service for connection pool status.
So, not sure, what you are trying to achieve here, pool on top of another pool?

Related

Programmatically create Artemis cluster on remote server

Is it possible to programmatically create/update a cluster on a remote Artemis server?
I will have lots of docker instances and would rather configure on the fly than have to set in XML files if possible.
Ideally on app launch I'd like to check if a cluster has been set up and if not create one.
This would probably involve getting the current server configuration and updating it with the cluster details.
I see it's possible to create a Configuration.
However, I'm not sure how to get the remote server configuration, if it's at all possible.
Configuration config = new ConfigurationImpl();
ClusterConnectionConfiguration ccc = new ClusterConnectionConfiguration();
ccc.setAddress("231.7.7.7");
config.addClusterConfiguration(ccc);
// need a way to get and update the current server configuration
ActiveMQServer.getConfiguration();
Any advice would be appreciated.
If it is possible, is this a good approach to take to configure on the fly?
Thanks
The org.apache.activemq.artemis.core.config.impl.ConfigurationImpl object can be used to programmatically configure the broker. The broker test-suite uses this object to configure broker instances. However, this object is not available in any remote sense.
Once the broker is started there is a rich management API you can use to add things like security settings, address settings, diverts, bridges, addresses, queues, etc. However, the changes made by most (although not all) of these operations are volatile which means many of them would need to be performed every time the broker started. Furthermore, there are no management methods to add cluster connections.
You might consider using a tool like Ansible to manage the configuration or even roll your own solution with a templating engine like FreeMarker to customize the XML and then distribute it to your Docker instances using some other technology.

Playframework scala slick database connections and aws

I have a problem with my database connections. Whenever my project runs a db.run from any of my microservices it creates a new connection to my db. I have a play-scala-slick project and I'm using Amazon Web Services (AWS).
Do I have to manually open and close connections e.g. for every query from any of my microservices or is there a clean, proper, smooth way to handle my connections? Thanks!
A solution is to steh the timeout variables in aws rds.
First you have to set up a Parameter Group
set global wait_timeout=3;
set global interactive_timeout=3;

Apache Ignite Failover functionality

I have set apache ignite on a Cluster of nodes and sent some job to some server node to run. When connection to that server node was lost I need to somehow store the result of that node locally (either via binary file or via some other way). Then when the connection with that node is established again push back the stored results to some Database server.
I'm working under .Net platform.
I can use
EventType.EVT_CLIENT_NODE_DISCONNECTED
EventType.EVT_CLIENT_NODE_RECONNECTED
these events and inside of their functions to implement the 'storing locally' and 'pushing to the DB server' functionality but I wanted to find some ready solution.
Is there any ready tool with the functionality I mentioned to just take and use it?
You can take a look at Checkpointing. I'm not sure this is exactly the same as you described (mainly because it will save the intermidiate state on server side), but I think it can be quite helpful.

Morphia connection pool?

Is there a way to configure the connection pool properties of Morphia? I see the connection count increase appropriately in the console as I run multiple, concurrent tests against my application. However, I have been unable to locate any documentation that explains how to configure the initial number of connections, timeouts, size of the pool, etc.
Any resources you can point me to that would explain how to do this?
You would tune that through the Mongo (or MongoClient) you use to connect. Morphia itself doesn't do any pooling. More documentation on the java driver can be found here: http://docs.mongodb.org/ecosystem/drivers/java/

JBoss 7.1.1 and the EJB 3.1 Timer Service

I am thinking about porting a Spring Quartz based application to EJB 3.1 to see if EJB has improved. I am having problems understanding how fail-over works with the Schedule Timer Service. In Quartz, there are database tables which clustered Quartz instances use. If one node in your cluster crashes, jobs will still get executed on other nodes.
I have been looking at how the Timer Service persists things and it appears to use the file system of the server the Timer was created on. Is this true? I do not see how this would be possible as it would render the Timer Service unusable since it would not support failover.
So i must be missing something. Can anyone help me out with this?
The EJB timer service is simply not as advanced as Quartz (with or without Spring).
EJB timers are persisted to an unknown location. It may happen to be the file-system, but it could also be the Windows registry if you happen to be running on Windows, or it could be an LDAP server or whatever.
There was an issue on the EJB spec JIRA for some time about this, and it was discussed on the spec mailing list, but then it was brutally dropped and closed because no one bothered to reply anyone (perhaps because a lot of people were on vacation at the time). It's one of the lamest reasons to close an issue if you'd ask me, but I guess the spec lead sometimes must resort to such measures.
Anyway, in JBoss AS persisting happens to an embedded relational datasource, that on its turn writes to the filesystem. Via propriatary configuration you can point this datasource to any remote DB. Fail-over would have to come from propriatary JBoss functionality as well. Although EJB forbids lots of things for the sake of potential clustering, there's no explicit clustering support in the spec and thus specifically EJB timers are not cluster aware.
Not sure if this was available at the time of the question but you can use the 'cluster-ha-singleton' for this, it allows you to create a singleton timer that is invoked from a single cluster node, in case of failover of the chosen node a new node is elected to run the singleton (and therefore the timers)
http://www.jboss.org/quickstarts/eap/cluster-ha-singleton/
It mentions EAP but I am running on AS 7.2.0 fine, the jars are already included in /modules/org/jboss/