ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP

ಶುಭ ಮಧ್ಯಾಹ್ನ, ಹಬ್ರ್! ನಾನು ಸಂಗ್ರಹಿಸಲು ನಿರ್ವಹಿಸಿದ ಜ್ಞಾನದ ಪಠ್ಯಪುಸ್ತಕ-ಉಲ್ಲೇಖ ಪುಸ್ತಕವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ನಾನು ಬಯಸುತ್ತೇನೆ RabbitMQ ಮತ್ತು ಸಣ್ಣ ಶಿಫಾರಸುಗಳು ಮತ್ತು ತೀರ್ಮಾನಗಳಿಗೆ ಸಾಂದ್ರೀಕರಿಸಿ.

ಪರಿವಿಡಿ

  • ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP ಮತ್ತು RPC
  • ಮೊಲMQ. ಭಾಗ 2. ವಿನಿಮಯಗಳನ್ನು ಅರ್ಥೈಸಿಕೊಳ್ಳುವುದು
  • ಮೊಲMQ. ಭಾಗ 3. ಕ್ಯೂಗಳು ಮತ್ತು ಬೈಂಡಿಂಗ್‌ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
  • ಮೊಲMQ. ಭಾಗ 4. ಸಂದೇಶಗಳು ಮತ್ತು ಚೌಕಟ್ಟುಗಳು ಯಾವುವು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
  • ಮೊಲMQ. ಭಾಗ 5: ಸಂದೇಶ ಪ್ರದರ್ಶನವನ್ನು ಪ್ರಕಟಿಸುವುದು ಮತ್ತು ಸೇವಿಸುವುದು
  • ಮೊಲMQ. ಭಾಗ 6. ಫೆಡರೇಶನ್ ಮತ್ತು ಸಲಿಕೆ ಮಾಡ್ಯೂಲ್ಗಳ ಅವಲೋಕನ
  • ಮೊಲMQ. ಭಾಗ 7. ಸಂಪರ್ಕ ಮತ್ತು ಶನೆಲ್ ಬಗ್ಗೆ ವಿವರಗಳು
  • ಮೊಲMQ. ಭಾಗ 8. .NET ನಲ್ಲಿ RabbitMQ
  • ಮೊಲMQ. ಭಾಗ 9. ಮಾನಿಟರಿಂಗ್

AMQP ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ

AMQP (ಅಡ್ವಾನ್ಸ್ಡ್ ಮೆಸೇಜ್ ಕ್ಯೂಯಿಂಗ್ ಪ್ರೋಟೋಕಾಲ್) ಸಿಸ್ಟಮ್ ಘಟಕಗಳ ನಡುವೆ ಸಂದೇಶಗಳನ್ನು ರವಾನಿಸಲು ಮುಕ್ತ ಪ್ರೋಟೋಕಾಲ್ ಆಗಿದೆ. ಮೂಲ ಕಲ್ಪನೆಯೆಂದರೆ ವೈಯಕ್ತಿಕ ಉಪವ್ಯವಸ್ಥೆಗಳು (ಅಥವಾ ಸ್ವತಂತ್ರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು) AMQP ಬ್ರೋಕರ್ ಮೂಲಕ ಅನಿಯಂತ್ರಿತ ರೀತಿಯಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಬಹುದು, ಇದು ರೂಟಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಪ್ರಾಯಶಃ ವಿತರಣೆಯನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ, ಡೇಟಾ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ವಿತರಿಸುತ್ತದೆ ಮತ್ತು ಬಯಸಿದ ಸಂದೇಶ ಪ್ರಕಾರಗಳಿಗೆ ಚಂದಾದಾರರಾಗುತ್ತದೆ.

ಪ್ರೋಟೋಕಾಲ್ AMQP ಮೂರು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ:

ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP

  • exchange (ವಿನಿಮಯ ಬಿಂದು ಅಥವಾ ವಿನಿಮಯ) - ಸಂದೇಶಗಳನ್ನು ಅದಕ್ಕೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ವಿನಿಮಯ ಬಿಂದು ಸಂದೇಶವನ್ನು ವಿತರಿಸುತ್ತದೆ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಾಲುಗಳಲ್ಲಿ. ಅವಳು ಸರತಿ ಸಾಲಿನಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ರವಾನಿಸುತ್ತದೆ ರಚಿಸಿದ ಲಿಂಕ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ (binding) ಅವನ ಮತ್ತು ಸರದಿಯ ನಡುವೆ
  • queue (ಸರದಿ) - ಡಿಸ್ಕ್ ಅಥವಾ RAM ನಲ್ಲಿ ಡೇಟಾ ರಚನೆ ಸಂದೇಶಗಳಿಗೆ ಲಿಂಕ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಸಂದೇಶಗಳ ನಕಲುಗಳನ್ನು ನೀಡುತ್ತದೆ consumers (ಗ್ರಾಹಕರಿಗೆ)
  • binding (ಬೈಂಡಿಂಗ್) - ಒಂದು ನಿಯಮ ಈ ಸಂದೇಶಗಳು ಯಾವ ಸರದಿಯಲ್ಲಿ ಹೋಗಬೇಕು ಎಂಬುದನ್ನು ವಿನಿಮಯ ಕೇಂದ್ರಕ್ಕೆ ತಿಳಿಸುತ್ತದೆ

ಪ್ರೋಟೋಕಾಲ್ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಚಲಿಸುತ್ತದೆ TCP / IP.

ಎರ್ಲಾಂಗ್ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ

ಯೋಜನೆಯ ಮೂಲ ಕೋಡ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿದೆ GitHub. ವಾಸ್ತುಶಿಲ್ಪ RabbitMQ-ಸರ್ವರ್ ಆಧಾರಿತ ಎರ್ಲಾಂಗ್ ಮತ್ತು ಬೀಮ್.

Erlang ಕಂಪನಿಯಿಂದ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ Ericsson 1980 ರ ದಶಕದ ಮಧ್ಯಭಾಗದಲ್ಲಿ 99,999% ಅಪ್‌ಟೈಮ್ ಅಗತ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ ವಿತರಿಸಲಾದ, ದೋಷ-ಸಹಿಷ್ಣು, ನೈಜ-ಸಮಯದ ವ್ಯವಸ್ಥೆಯಾಗಿ. Erlang ವಿವಿಧ ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ಆಧುನಿಕ ಅನ್ವಯಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಉದಾ. WhatsApp. ಲೇಖನದಲ್ಲಿ ನೀವು ಇನ್ನಷ್ಟು ಓದಬಹುದು ವಾಟ್ಸಾಪ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಫೇಸ್‌ಬುಕ್ $19 ಬಿಲಿಯನ್‌ಗೆ ಖರೀದಿಸಿದೆ

RabbitMQ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ

ಮೊಲ ಎಂಕ್ಯೂ ಓಪನ್ ಸೋರ್ಸ್ ಸಂದೇಶ ಬ್ರೋಕರ್ ಆಗಿದೆ. ಇದು ಪ್ರೋಟೋಕಾಲ್‌ನ ಎಲ್ಲಾ ಮೂಲ ತತ್ವಗಳ ಜೊತೆಗೆ ಸಂದೇಶಗಳನ್ನು ರವಾನಿಸುತ್ತದೆ AMQP ರಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ ವಿಶೇಷಣಗಳು. RabbitMQ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಪೂರಕಗೊಳಿಸುತ್ತದೆ AMQP.

ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆಯ ಮಾದರಿಯ ಮುಖ್ಯ ಕಲ್ಪನೆ RabbitMQ ವಿಷಯ producer (ಪ್ರಕಾಶಕರು) ನೇರವಾಗಿ ಸರತಿ ಸಾಲಿನಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವುದಿಲ್ಲ. ವಾಸ್ತವವಾಗಿ, ಮತ್ತು ಆಗಾಗ್ಗೆ, ಸಂದೇಶವನ್ನು ಯಾವುದೇ ಸರತಿಗೆ ತಲುಪಿಸಲಾಗುತ್ತದೆಯೇ ಎಂದು ಪ್ರಕಾಶಕರಿಗೆ ತಿಳಿದಿರುವುದಿಲ್ಲ.

ಬದಲಾಗಿ, ಪ್ರಕಾಶಕರು ವಿನಿಮಯಕ್ಕೆ ಸಂದೇಶಗಳನ್ನು ಮಾತ್ರ ಕಳುಹಿಸಬಹುದು. ಒಂದೆಡೆ, ವಿನಿಮಯವು ಪ್ರಕಾಶಕರಿಂದ ಸಂದೇಶಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಮತ್ತು ಮತ್ತೊಂದೆಡೆ, ಅದು ಅವರನ್ನು ಸರತಿ ಸಾಲಿನಲ್ಲಿ ಕಳುಹಿಸುತ್ತದೆ. ವಿನಿಮಯವು ತಾನು ಸ್ವೀಕರಿಸುವ ಸಂದೇಶದೊಂದಿಗೆ ನಿಖರವಾಗಿ ಏನು ಮಾಡಬೇಕೆಂದು ತಿಳಿದಿರಬೇಕು. ಇದನ್ನು ನಿರ್ದಿಷ್ಟ ಸರತಿ ಸಾಲಿಗೆ ಸೇರಿಸಬೇಕೆ? ಇದನ್ನು ಬಹು ಸಾಲುಗಳಿಗೆ ಸೇರಿಸಬೇಕೆ? ಅಥವಾ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಬೇಕು.

ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP

ಸಂಕ್ಷಿಪ್ತ ಕೆಲಸ RabbitMQ ಈ ಕೆಳಗಿನಂತೆ ವಿವರಿಸಬಹುದು:

  1. ಪ್ರಕಾಶಕರು ನಿರ್ದಿಷ್ಟ ವಿನಿಮಯಕ್ಕೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ
  2. ವಿನಿಮಯ, ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ಅದು ಮತ್ತು ಸರದಿಯ ನಡುವಿನ ಬೈಂಡಿಂಗ್ ನಿಯಮಗಳಿಗೆ ಅನುಸಾರವಾಗಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸರತಿಗೆ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ.
  3. ಸರತಿಯು ಈ ಸಂದೇಶದ ಉಲ್ಲೇಖವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಸಂದೇಶವನ್ನು ಸ್ವತಃ RAM ಅಥವಾ ಡಿಸ್ಕ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ
  4. ಗ್ರಾಹಕರು ಸರದಿಯಿಂದ ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸಲು ಸಿದ್ಧರಾದ ನಂತರ, ಸರ್ವರ್ ಸಂದೇಶದ ನಕಲನ್ನು ಲಿಂಕ್ ಮೂಲಕ ರಚಿಸುತ್ತದೆ ಮತ್ತು ಕಳುಹಿಸುತ್ತದೆ
  5. ಗ್ರಾಹಕರು ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ ಮತ್ತು ಬ್ರೋಕರ್‌ಗೆ ದೃಢೀಕರಣವನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ
  6. ಬ್ರೋಕರ್, ದೃಢೀಕರಣವನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ಸರದಿಯಿಂದ ಸಂದೇಶದ ನಕಲನ್ನು ತೆಗೆದುಹಾಕುತ್ತಾನೆ. ನಂತರ RAM ಮತ್ತು ಡಿಸ್ಕ್ನಿಂದ ಅಳಿಸುತ್ತದೆ

ಆರ್ಪಿಸಿ

ಪ್ರಕ್ರಿಯೆ RPC (ರಿಮೋಟ್ ಕಾರ್ಯವಿಧಾನದ ಕರೆ) ನ್ಯೂಕ್ಲಿಯಸ್‌ನೊಂದಿಗೆ ಬಹುತೇಕ ಎಲ್ಲಾ ಪರಸ್ಪರ ಕ್ರಿಯೆಗಳಿಗೆ ಆಧಾರವಾಗಿದೆ RabbitMQ. ಉದಾಹರಣೆಗೆ, ಕ್ಲೈಂಟ್‌ನ ನಿಯಮಗಳ ಬಗ್ಗೆ ಆರಂಭಿಕ ಚರ್ಚೆಗಳು RabbitMQ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ RPC. ಈ ಅನುಕ್ರಮ ಪೂರ್ಣಗೊಂಡ ನಂತರ, RabbitMQ ಕ್ಲೈಂಟ್‌ನಿಂದ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಿದ್ಧವಾಗಿದೆ:

ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP

ನಿರ್ದಿಷ್ಟತೆಯಲ್ಲಿಯೂ ಸಹ AMQP ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ಎರಡೂ ಆಜ್ಞೆಗಳನ್ನು ನೀಡಬಹುದು. ಇದರರ್ಥ ಕ್ಲೈಂಟ್ ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಕಾಯುತ್ತಿದೆ. ಆಜ್ಞೆಗಳು ವರ್ಗಗಳು ಮತ್ತು ವಿಧಾನಗಳಾಗಿವೆ. ಉದಾಹರಣೆಗೆ, Connection.Start - ವಿಧಾನ ಕರೆ Start ವರ್ಗ Connection.

ಸಂಪರ್ಕ ಮತ್ತು ಚಾನಲ್‌ಗಳು

ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವೆ ಅಂತಹ ಮಾಹಿತಿ ವಿನಿಮಯಕ್ಕಾಗಿ, ಚಾನಲ್‌ಗಳು. ಚಾನಲ್‌ಗಳನ್ನು ಒಳಗೆ ರಚಿಸಲಾಗಿದೆ ನಿರ್ದಿಷ್ಟ ಸಂಪರ್ಕ. ಪ್ರತಿಯೊಂದು ಚಾನಲ್ ಅನ್ನು ಇತರ ಚಾನಲ್‌ಗಳಿಂದ ಪ್ರತ್ಯೇಕಿಸಲಾಗಿದೆ. ಸಿಂಕ್ರೊನಸ್ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಸ್ವೀಕರಿಸುವವರೆಗೆ ಮುಂದಿನ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಆಜ್ಞೆಗಳನ್ನು ಸಮಾನಾಂತರವಾಗಿ ಕಳುಹಿಸಲು, ನೀವು ಹಲವಾರು ಚಾನಲ್‌ಗಳನ್ನು ತೆರೆಯಬೇಕು. ಪ್ರತಿಯೊಂದು ಚಾನಲ್ ಪ್ರತ್ಯೇಕವಾಗಿ ರಚಿಸುತ್ತದೆ Erlang ಪ್ರಕ್ರಿಯೆ. ಒಂದು ಸಂಪರ್ಕವು ಬಹು ಚಾನೆಲ್‌ಗಳನ್ನು ಹೊಂದಬಹುದು (ಮಲ್ಟಿಪ್ಲೆಕ್ಸಿಂಗ್) ಪ್ರತಿ ಚಾನಲ್‌ಗೆ ಕೆಲವು ರಚನೆಗಳು ಮತ್ತು ವಸ್ತುಗಳು ಮೆಮೊರಿಯಲ್ಲಿವೆ. ಆದ್ದರಿಂದ, ಒಂದು ಸಂಪರ್ಕದೊಳಗೆ ಹೆಚ್ಚು ಚಾನಲ್‌ಗಳಿವೆ, ದಿ RabbitMQ ಹೆಚ್ಚು ಮೆಮೊರಿಯನ್ನು ಬಳಸುತ್ತದೆ ಅಂತಹ ಸಂಪರ್ಕವನ್ನು ನಿರ್ವಹಿಸಲು.

ಮೊಲMQ. ಭಾಗ 1. ಪರಿಚಯ. ಎರ್ಲಾಂಗ್, AMQP

ಸಂಪರ್ಕ ಮತ್ತು ಚಾನಲ್ ಅನ್ನು ರಚಿಸುವ ಸರಳ ಉದಾಹರಣೆ RabbitMQ.Client:

// ...
private void TryConnect()
{
    var factory = new ConnectionFactory() 
    {
        HostName = "host_name",
        UserName = "user_name",
        Password = "p@ssword",
        // Включение автоматичекого восстановления
        // соединения после сбоев сети 
        AutomaticRecoveryEnabled = true
    };
    _connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
    _channel = _connection.CreateModel();
    // other options 
}

ಪ್ರತಿ ಕಾರ್ಯಾಚರಣೆಗೆ ಹೊಸ ಸಂಪರ್ಕವನ್ನು ತೆರೆಯುವುದನ್ನು ಬಲವಾಗಿ ವಿರೋಧಿಸಲಾಗುತ್ತದೆ ಹೆಚ್ಚಿನ ವೆಚ್ಚಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಚಾನಲ್‌ಗಳು ಸಹ ನಿರಂತರವಾಗಿರಬೇಕು, ಆದರೆ ಅನೇಕ ಪ್ರೋಟೋಕಾಲ್ ದೋಷಗಳು ಚಾನಲ್ ಅನ್ನು ಮುಚ್ಚಲು ಕಾರಣವಾಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಚಾನಲ್‌ನ ಜೀವಿತಾವಧಿಯು ಸಂಪರ್ಕಕ್ಕಿಂತ ಕಡಿಮೆಯಿರಬಹುದು.

RabbitMQ ಅನ್ನು ಎಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ?

ಸೂಕ್ಷ್ಮ ಸೇವೆಗಳ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ರೋಟೋಕಾಲ್ AMQP ಮತ್ತು ಅದರ ಅನುಷ್ಠಾನದಲ್ಲಿ RabbitMQ ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ ಅಸಮಕಾಲಿಕ ಪರಸ್ಪರ ಕ್ರಿಯೆ ಸೇವೆಗಳ ನಡುವೆ.

ಸನ್ನಿವೇಶದಲ್ಲಿ IIOT ಶಿಷ್ಟಾಚಾರ AMQP ಮತ್ತು ಅದರ ಅನುಷ್ಠಾನದಲ್ಲಿ RabbitMQ ಸರ್ವರ್‌ಗಳ ನಡುವೆ ಡೇಟಾ ವಿನಿಮಯಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ (ಸರ್ವರ್-ಸರ್ವರ್). ಪ್ಲಗಿನ್ ಅನ್ನು ಸಹ ಬಳಸಿ MQTT ಪ್ಲಗಿನ್ RabbitMQ ಇದು ಪ್ರೋಟೋಕಾಲ್ನ ಅನುಷ್ಠಾನವಾಗಿದೆ MQTT ಕಡಿಮೆ-ವೇಗದ, ಹೆಚ್ಚಿನ-ಸುಪ್ತ ಪರಿಸರದಲ್ಲಿ ಸಂವೇದಕ ಮತ್ತು ಸರ್ವರ್ ನಡುವೆ ಡೇಟಾವನ್ನು ರವಾನಿಸಲು (ಬೆಂಬಲಿತ ಪ್ರೋಟೋಕಾಲ್‌ಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿಯನ್ನು ಇಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ ಯೋಜನೆಯ ವೆಬ್‌ಸೈಟ್).

ಮುಂದಿನ ಲೇಖನದಲ್ಲಿ ನಾವು ವಿನಿಮಯವನ್ನು ಹೆಚ್ಚು ವಿವರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ.

ಉಲ್ಲೇಖಗಳು

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ