- Pierre-Louis TELEP
- Hugues FARTHOUAT
- Adrien DALBEIGUE
- Joseph POURADIER DUTEIL
Video démo Projet gitlab Projet github
- Creation des microservices de genération
- Mise en place du proxy et docker-compose
- Mise en place du logger pour le broker
- Travail sur le backend Monolithique :
- Chat
- DTO
- Login
- Store
- card generator
- Travaux sur les microservices de génération
- Travail sur nodejs mise en place des sockets:
- Socket du chat
- Socket du combat
- Socket du jeu
- Gestion des room eet match making
- Front end
- Nodejs socket
- gatling simulation (monolitique)
- Mise en place d'une interface pour jouer et le chat
- Mise en place du match making
- Sauvegarde des logs sur le broker
- mise en place du proxy
- Pendant le jeu, il n'y a pas d'energie pour jouer
J'ai envie de tester la difference de performance entre le monolitique en java et en Go. Pour cela on utilisera gatling pour simuler des utilisateurs/du traffic. Et on visualisera les performances de chaque solution dans Grafana/Prometheus.
I got a lot of truble with the stomp protocol:
With the js librart stompit I got no issue passing the message to the broker and read it in java. The TextMessage is well received.
But when i send a message with the go package go-stomp, it is parsed a BytesMessage.
I tried to change the content-type of the message, but it didn't change anything.
So I made some research about the stomp and JMS protocol. And compared the frames created by the two libraries: With stompit:
Command: MESSAGE
Headers: {
expires: '0',
destination: '/queue/test',
subscription: '1',
priority: '4',
'message-id': 'ID:f61b9fbb07ad-41815-1735584783348-3:34:-1:1:1',
'content-type': 'text/plain',
timestamp: '1735764298315'
}
Body: Hello, STOMP!
With go-stomp:
Command: MESSAGE
Headers: {
'content-length': 13,
expires: '0',
destination: '/queue/test',
subscription: '1',
priority: '4',
'message-id': 'ID:f61b9fbb07ad-41815-1735584783348-3:35:-1:1:1',
'content-type': 'text/plain',
timestamp: '1735764310899'
}
Body: Hello, STOMP!
The only noticable difference is the content-length header.
So I forked the project and deleted the line that add the content-length header.
Data read from java spring: from stompit:
ActiveMQTextMessage {
commandId = 3,
responseRequired = false,
messageId = ID:f61b9fbb07ad-41815-1735584783348-3:44:-1:1:1,
originalDestination = null,
originalTransactionId = null,
producerId = ID:f61b9fbb07ad-41815-1735584783348-3:44:-1:1,
destination = queue://GENERATION-IMAGE-INPUT,
transactionId = null,
deliveryTime = 0,
expiration = 0,
timestamp = 1735765286268,
arrival = 0,
brokerInTime = 1735765286269,
brokerOutTime = 1735765286269,
correlationId = null,
replyTo = null,
persistent = false,
type = null,
priority = 4,
groupID = null,
groupSequence = 0,
targetConsumerId = null,
compressed = false,
userID = null,
content = null,
marshalledProperties = org.apache.activemq.util.ByteSequence@6af0496a,
dataStructure = null,
redeliveryCounter = 0,
size = 0,
properties = {content-type=text/plain},
readOnlyProperties = true,
readOnlyBody = true,
droppable = false,
jmsXGroupFirstForConsumer = false,
text = Hello, STOMP!}; {}
from go-stomp:
ActiveMQBytesMessage {
commandId = 3,
responseRequired = false,
messageId = ID:f61b9fbb07ad-41815-1735584783348-3:48:-1:1:1,
originalDestination = null,
originalTransactionId = null,
producerId = ID:f61b9fbb07ad-41815-1735584783348-3:48:-1:1,
destination = queue://GENERATION-IMAGE-INPUT,
transactionId = null,
deliveryTime = 0,
expiration = 0,
timestamp = 1735765420955,
arrival = 0,
brokerInTime = 1735765420957,
brokerOutTime = 1735765420958,
correlationId = null,
replyTo = null,
persistent = false,
type = null,
priority = 4,
groupID = null,
groupSequence = 0,
targetConsumerId = null,
compressed = false,
userID = null,
content = org.apache.activemq.util.ByteSequence@14014932,
marshalledProperties = org.apache.activemq.util.ByteSequence@5e46a8f9,
dataStructure = null,
redeliveryCounter = 0,
size = 0,
properties = {content-type=text/plain},
readOnlyProperties = true,
readOnlyBody = true,
droppable = false,
jmsXGroupFirstForConsumer = false
} ActiveMQBytesMessage{ bytesOut = null,
dataOut = null,
dataIn = java.io.DataInputStream@12c8f68e }; {}
with jo-pouradier/stomp:
ActiveMQTextMessage {
commandId = 3,
responseRequired = false,
messageId = ID:f61b9fbb07ad-41815-1735584783348-3:60:-1:1:1,
originalDestination = null,
originalTransactionId = null,
producerId = ID:f61b9fbb07ad-41815-1735584783348-3:60:-1:1,
destination = queue://GENERATION-IMAGE-INPUT,
transactionId = null,
deliveryTime = 0,
expiration = 0,
timestamp = 1735766285617,
arrival = 0,
brokerInTime = 1735766285617,
brokerOutTime = 1735766285617,
correlationId = null,
replyTo = null,
persistent = false,
type = null,
priority = 4,
groupID = null,
groupSequence = 0,
targetConsumerId = null,
compressed = false,
userID = null,
content = null,
marshalledProperties = org.apache.activemq.util.ByteSequence@15431a52,
dataStructure = null,
redeliveryCounter = 0,
size = 0,
properties = {content-type=text/plain},
readOnlyProperties = true,
readOnlyBody = true,
droppable = false,
jmsXGroupFirstForConsumer = false,
text = Hello,
STOMP GO!}; {}