index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const RabbitMQListener = require('./utils/RabbitMQListener');
  2. const rabbitMQListener = new RabbitMQListener();
  3. const RabbitMQProducer = require('./utils/RabbitMQProducer');
  4. let rabbitMQProducer = new RabbitMQProducer();
  5. async function formatForTwitter(message) {
  6. return "message formatted for twitter: " + message;
  7. }
  8. async function formatForLinkedin(message) {
  9. return "message formatted for linkedin: " + message;
  10. }
  11. async function formatMessage(message) {
  12. if (message === null || message === undefined) {
  13. return;
  14. }
  15. let messages = {
  16. twitter : '',
  17. linkedin: ''
  18. };
  19. try {
  20. // Use Promise.all to concurrently format the message for Twitter and LinkedIn
  21. [messages.twitter, messages.linkedin] = await Promise.all([
  22. formatForTwitter(message).catch(error => {
  23. console.error('Error formatting for Twitter:', error);
  24. return null;
  25. }),
  26. formatForLinkedin(message).catch(error => {
  27. console.error('Error formatting for LinkedIn:', error);
  28. return null;
  29. })
  30. ]);
  31. } catch (error) {
  32. // Handle any errors that occur during the formatting process
  33. console.error('Error formatting message:', error);
  34. }
  35. try {
  36. rabbitMQProducer.sendMessage('formattedMessages', JSON.stringify(messages));
  37. } catch (error) {
  38. console.error('Error sending message:', error);
  39. }
  40. }
  41. (async () => {
  42. await rabbitMQListener.listenToQueue('formatter', (message) => {
  43. console.log('Received message:', message);
  44. formatMessage(message);
  45. });
  46. })();