Choosing the right way to process data might become a strategic and non trivial decision for many kind of applications. Especially in applications where an high percentage of the time is spent elaborating informations behind the scenes. A solution could be to use a message queuing system for processing data asyncronously. Using AMQP it becomes possible to define different types of queue patterns in order to solve different types of problems.
The purpose of the talk is to show how to approach the diffentent scenarios in php adding a great value to your application.
7. • useful for long-running jobs
• systems decoupled
• scales well (event-based)
• additional system
requirements
ASYNCHRONOUS
COMMUNICATION
Pros Cons
44. PUBLISH/SUBSCRIBE
P U B L I S H E R
S U B S C R I B E R
Q U E U E
S U B S C R I B E R S U B S C R I B E R
45. PUBLISH/SUBSCRIBE
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
tell me when a user is created
tell me when a user is created
tell me when a user is created
46. PUBLISH/SUBSCRIBE
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
U S E R
S E R V I C E
B R O K E R
username: agiuliano
password: ******
mail: ***@gmail.com
UserCreated
47. PUBLISH/SUBSCRIBE
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
UserCreated
UserCreated
UserCreated
59. TOPIC
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
U S E R
S E R V I C E
<user. created>
60. TOPIC
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
U S E R
S E R V I C E
<user. created>
61. TOPIC
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
U S E R
S E R V I C E
<user. updated>
62. TOPIC
M A I L
S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
U S E R
S E R V I C E
<user. updated>
63. TOPIC
M A I L S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
S T O R E
S E R V I C E
<item.purchased>
64. TOPIC
M A I L S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
S T O R E
S E R V I C E
<item.purchased>
65. TOPIC
M A I L S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
S T O R E
S E R V I C E
<item.created>
66. TOPIC
M A I L S E R V I C E
A U T H
S E R V I C E
C O U P O N
S E R V I C E
B R O K E R
[user. *]
[user. created]
[user. created, *.purchased]
S T O R E
S E R V I C E
<item.created>