回到目录

为什么要有本篇文章

本篇文章主要实现了RTX消息生产者,并且完成了整体的设计方式,之前在设计时消息生产者全局使用单一的生产方式,即一个项目里使用了Email就不能使用SMS,这种设计方法和实际不相符,虽然在性能上是最佳的(采用了单例模型,维护一个生产者,使用策略模式进行生产者的实现,使用工厂模式生产具体生产者),实际项目中,应该是可以自动选择消息生产者的,当然为了程序的性能,我们还必须使用单例模式来生产具体生产者,这种单例,在本程序中,采用了具体类型,具体单例的方法,即Email自己维护单例,SMS自己维护单例,这样,程序即能满足实际的需要,又可以提高自己的性能!

第五回  消息组件

第六回  消息组件~续

强大的设计

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyMAAAErCAIAAABCfcvWAAAgAElEQVR4nO3d+1NTaYL/8f1Tzv/ED1219a2aqi3L7qp2pYHBZm3HbttpjJdVbARBESEY7qJc5NJeQG65QSCAAqLiJZKEi649Tu8u1tbz/SEME3M5OQnJc/LkvF/1ri46HALtPHg+I6j/IgAAAJAb/2L2BwAAAFCwWFoAAAC5wtICAADIFZYWAABArrC0AAAAcoWlBQAAkCssLQAAgFxhaQEAAOQKSwsAACBXWFoAAAC5wtICAADIFZYWAABArrC0AAAAcoWlBQAAkCssLQAAgFxhaQGAtW1vC69X2O3CbhfnzwubjUi9Igd4dFSEw2Z/RsViaQGAhU1Nibo60dIi+vrE+LjwesXKinj2jEilZmfF+LgYHBStreLqVdHbK/7nf8z+1PonlhYAWNL2tmhsFA6HePxYvH4tPn4Unz4RqV0gIFwu0d0trl0T796Z/Tm2h6UFANYTDovaWjEwIObmxIcP5t8gibLV77+LlRUxMiLq68Xr12Z/pgnB0gIAy/n8Wdy4IQYHxYsX4m9/IyrAQiHx8KGorc2HLyOytADAYsbGRFubWFgw/3ZIlLvW1kR3t+jtNfvzjaUFAJayvS3q6sTEhHj/3vx7IVFO83rFtWumfw2RpQUAVjI+LhwO8eqV+XdBM9I0Lebl6Efir0l4gfHXpvXxJHu2lB+hzodxwA9P+cJh0dUl+vrM/ZxjaQGAldjtYmBAfPxo/l3QjOKXljAwdzLYMVpyB3xHydaYwXdhuaamxJUr5n7OsbQAwEquXBEul/j9dwumaVr0y7HrJO6yZNforSjDH0PKZzb+vqIvjnnQyIdU4C0vC5vN3M85lhYAWMn588LvN//+J72YOZJsnUTvmJiZkvBNEl5g/MNI+CHpX6bzMksrQc+fs7QAABLZbGJ52fz7n/RiJpTObEr2qpwuLZ33pf9rWgl/AUywtPZbX2dpAQAkstnE6qr59z+T0lkwCa8x+LYJnyTlQtJ5j/qXJXw55k1YWnuxtAAAUll4aRmZUyLqV4mMjKSUz6/zwejsvHRXXfx/EUtrL5YWAECqyNL6+NFqfbFRPn6M/DP6hehr4l+V7E0SXqBzTcqLYz68ZG8S/58W87Y6z2OtWFoAAKmsurRiSvBLRFGvinkh5dvqPEnCNxepZtn+Nfri3zzmQZYWSwsAIJe1l5b+r2nFPGLk166SPZ6VpXXw98vSYmkBAOSy6tIy/gtX0pZWwl8M03nzlO/X4PNYK5YWAEAqqy4tsmgsLQCAVDabWFkR//VfRJbo5UuWFgBAIpYWWSqWFgBAKpYWWSqWFgBAKpYWWSqWFgBAKpYWWSqWFgBAqsjS+vDBlALrof7HzyoaPRWNnq/OjhVVjpLFixyGlqEn62sbOTl1L16wtAAAEpm3tLoerHxT46y45b849KLu0RuHO9Q9s3l7lqxbmydc9+jN5ZGXJ9qXvq5xXuz2fwpts7QAACozY2kF1kNl190nWheap4O989tDizsjS++J9uub33a4Q7/cWfn2qnN15R1LCwCgLOlLa31t43D1dNXwy3ZPeHDh/fAiUYKGFt53zWxeHX3zbZ1r6clblhYAQE1yl9bu9vvSa+7q+696fFtDi++J9Ovz71wff/v1lemsfRmRpQUAkMpmE8vL4v17OTmGl39sX2z3hAYXdoiMdNu39cudlYtd89k5hCwtAIBUEpdW4GXwmxpn8/TGgN/8+zcpVKs7dKTevbT0hqUFAFCNxKXVPrJ8om2xx7d1b2HH4mmaZvDBtC5I6zKF6p3fPt2zcqk7G7+sxdICAEglcWlVNHqqhl/0+3cGFpRMi5PZk+z/M/qRmAf139z4NZl9kHnYjYnAocuTLC0AgGoiS2tnR0KHLk82TgQG/NuKpmlaLp5q/+Vkzx+/8L5Ye7rXmP6Dlq06vOGiytEsnMPnz1laAACJJC6tr86OtbpD/f5tRdM0LeGD+6L/Nf6C6CdJeEGMA36cB3mGPKx7dpOlBQBQkMSlVVQ52u4N981vK5qmafoPJns5+pHof6Z8E533HvOG+kz/oTt43bNbLC0AgILkLq0OxZdW/II5yNLSGU/JPoCUVxbGroqPpQUAUJPNJp4+FdvbEoosrd65LUXTNE3/wYQvRy+z/cdTPlXM4zpSXmb6j1tW6p7ZLKoczcI5ZGkBAKSSu7TaveG7c1uKpmma/oPxLyd7JObxeCnfb8wF8W9l8G1VqYulBQBQEkvLcDlaWvrPr/N4/GUpR5u6sbQAAGqSvLQ84Tu+LUWLHzGRB6MviH854fXRVyZ8cyOPG7nM4Nvmf50sLQCAkiJLa2tLQkWVo22ecI9vixKmaVpaj8dflpDp/11ZaW9pHfwcrq2xtAAAEklfWrd9W0Tp1sHSAgAoiaVFKsTSAgCoyWYTT56IzU0JFVWOtnpC3bObROm297fxHPwcPnvG0gIASCR9aXXNbhKlWztLCwCgJMlLyx3qmtkkSjeWFgBATXKXlsMd6pzZJEq3NpYWAEBJ0pdWhzdMlG5tHpYWAEBFkaUVDkuIpUUZt7e0Dn4OWVoAAKnkLq0WV6jdEyZKt1Z3iKUFAFCQxKV16PJkw3igzRMmSrdbLpYWAEBFEpdW2TVX9W/rre4QUbo1Tgb+dHGCpQUAUI3EpVXTM3+qe9lh9j2b1MsVunDv+ckmL0sLAKAam00sLYlQSEK+mefF1zx2Z9DhDhEZz+4KHrPPjYwuZ+Ecrq6ytAAAEklcWiIUOtnkPX/veYs7dIvIWC3uUPX9V6X1rt13QZYWAEA1cpfWh/XA4eqphol3jC0ylCvUNLVx5Kpr/cmr7BxClhYAQCq5S0uEQuNTz4qveRom37W4gkQ62V3Bm1Mb5U2+u/efZu0EsrQAAFJJX1oiFHowvnq4eur8ved2Z9DuIkpQs3Oj5uHro9fc2ZxZLC0AgGyRpRUM5rrPb9+uud37//rh5duTNz3lTT5b/1qTM9jsDNqdwWaydpEz0DS9UTX8sqJl/kjt9Kr/ZZaP4soKSwsAIFEul9bnt2+Xp6YG2tuqzp0tKT5aUnx0anAw+oJH4yunW7xFlaNE0ZVdc/U/fLob2Mj+sWRpAQCkyvbSil9XkU6f/EtbQ8Pva2s5WnVEhmJpAQCkysbS0l9X7t9GdlZWzL/FEgVZWgAAyTJdWqwrUjKWFgBAKptNLC6KjQ0jfX7zZnlycqCtNfG6GhneWV42+FRE5sTSAgBIlWppsa6ooGJpAQCkSrS0WFdUsLG0AABS/WNpsa7IErG0AADSfN7dXT51aqDxBuuKrBJLCwCQU593d5efPh3o76u6dDF2XV2/7h4Z3nn6VLx7R1SYLS+ztAAAWZZ0XZ36qa2iwt1zm3VFVomlBQDICr115XC43a6dnR0h/vF9Wqbf/4jkxNICAGTM6LqKxtIiS8XSAgCkJZN1FY2lRZaKpQUASOmg6yqazSYWFkQgQGSJWFoAgISyua6isbTIUrG0AAD7crWuorG0yFKxtACg8Ny90/P7x48GL5axrqKxtMhSsbQAoJD88ccfF86dKy8tGRsb1blM9rqKxtIiS8XSAoCCsbOzc/rnUyXFR0uK/732ypWY15q5rqJFltbbt0SW6OlTlhYAFIJX6+t/+eH4/n469ucykT/rKhpLiywVSwsACsDExPhfjh+P3lLlZaXnztryZV1FY2mRpWJpAYDqurs6f/iPiuhRVVJ8tLT46Hf5s66isbTIUrG0AEBdL9bW/vrzqdLvvouZWZFv1bp86ZLZH2AiLC2yVPm/tALbf+/3vK1onq1onv3q7OOiylGyeJHD0PLoxXrob3LOqGSceYop2ZlfW1srKS4uKT76XYKZ9c9v1co7Npvw+8WbN0SW6MmTvF5aXZOvvql1VdzyXxx6UffojcMd6p7ZvD1L1q3NE6579ObyyMsT7Utf17ou9j759N+fpR1WCTjzFJPOmf+8u9vX19fV2eFoaTlT+UtJ8dHjFRVlpd+VFP97ZGkd//5YIBAw90gnwNIiS5W3Syuw/feyG94TbYvN08He+e2hxZ2RpfdE+/XNbzvcoV/urH5b514NGP0TGvMZZ570M3Lm19bWHty/X3vlyrE/l1V8f6ws1Z+qZQ6WFlmq/Fxa66G/Hb7irBp+2e4NDy2a/xMc5WfDi++7Zzavjr75tt699PqD/LObRZx5MlJaZz4cCuXXN8LvY2mRpcrDpbX7+f9Kb3ir77+649saXnxPpF+/f+f6+Nuva5zqfhmRM09ppfyZjyyt16+JLFEeLi3H2MsfO5bavWHTfzojVerxbf1yZ/Vi7xNTTvDBceYp3dQ+8ywtslT5trQC23//ptbVPL0xuGD+z2WkUK3u0JFrHhW/hsiZp8xS98yztMha5dvSan+8fqJt6c7c9tDi+0JK07QMXpXWZdl6HkXrn98+3bNyqfepWec4Y0qc+Zhjk/EpSut5Dnjmo19bkMde3TPP0iJrlW9Lq6J5tmr4xaB/Z2hB4TRNM/JCMvpPZeT9GrzGyPUK1TgROPTrtFnnOGNKnPn4o5LB4TH4JNk688k+laIfMfI5mM8peuZZWmSt8m1pHfp1+uZkYHBhR/U0TYt+IfqfMRcke8OEz5Pweh3615j+o5TdOr3hospRk45x5vL/zMec28xOUcqTGf/uDnLmB6M+6XQ+L1L+9+Z5ip55YbOJ+Xnx6hWRJVpayq+l9dXZx22ekOk/f2W9+J+7jdwqdC474Eei0L3EeLdnN1W86+T5mU+4SzI4Pwk3ULLXHvDMx7yVzjtK+aHmeYqeeZYWWat8W1pFlaOd3rDpP38dpJT3DP2fzdO9KyR8rZH71sFHW751x7el4l0nz898/DlJeYaTPU/McyZ8bVbOfLKnSvkmGfx3mZuiZ56lRdYqD5dW18zmvYUdpdM0LeaFhK9KJuHbxj+V8Xdq/EmUrkfNu44SZz7jY5nwyvhni7yQ3TO//5wGP8Uy+I8yPUXPvLlLK7Cw1j+yUNHgqmhwfXV2zPS/1JJML3IYWu761ueesbTUK4s/y+s8nnK06Vxm+g9RFlP0rpP/Z17/IKU8hAmviXnyhEcxK2de59l0nt/0H3ODKXrm95bW+rr8ugbmv7kyXdEyz98rSpG++HtFr0xfbPV+Wn2R5YO3uMjSymE6P7kbuVUku0z/XcS/x/i3Mvi2aqXoXSfPz3z8wYveRsaPULLRE/882T3zOs/G0jKNGUsr4H9WVjd9otXP3ytKCfvH3yu68m3N9Kp3haWlQCl/lk/3Z/YD3hUSfiQK3VGMpOhdR7kzn+7Gin6r+JeTPaLzLoyf+fiX9T+MtJ4/H1L0zMtfWuu+1cO/TlUNv2z3hPkjgilZQwvvuyJ/r2itc8m9XMhLq3Nmc2BhR+k0TYt5Idmr4q+Mf5PMHjdymcG3VSVF7zpKnPnILo8+NukenujrdT4vUj5o/F1Hf8AJP7+S/d8PhT4vFD3zwmYTc3Pi5Us57a69KK2brr7/qse3ZfqfN0v5X1/k7xX9dfLTyvPsHMK8XFrhAf+2ummalvDlmEciL8RckPDBZE+l/3j8ZYnvKGb/cGUxRe86eX7mY86J/gFO+TzJDl6OzrzOf8jBnz8fUvTMS15ajt65H9sW2/P4z1KhfOu2b+uXOysXW72FvLT6/dtE6XZbzbsOZ54yTtEzL3NpBeZXv7ky3Ty9MeA3//5NCtXqDh2pcy25nrK0iP6ZoncdzjxlnKJnXubSau+dO9G22OPbMv2b6vKtlN+PmME3RBZSvZG/VzQrv6zF0qKCSdG7DmeeMk7RM7+3tF68kFDFdWfV8It+v/nfVHfA4r+PMP57CuNfm/CamBf032la1yj0PY5GujEROFQ1kYVzuLCQd0urwxvum98mSrfuWSXvOpx5yjhFz7zMpXWoaqJxImD6d9QdsGTf0ZvsmxF1viUx5lstE74vHfrXmP4Dld06In+vKEuLaD9F7zqceco4Rc+8zKX11dmxVnfI9F99PGCapiV7cP9V0f+a8Pr9yxI64Md2kGfI27ojf68oS4toP0XvOpx5yjhFz7zMpVVUOdqu/ueXpmnJHtx/VfS/Jrw+5vFk1yR8bcwb6jP9hytb7X1+sbSI9lP0rsOZp4xT9MwLm034fOL5cwkVzOdX/JTRWVo610c/Ycr3mPLKQtpV8e19fh38HObn0uqd3yZKN0XvOpx5yjj9M7+w4F9bW5N4lg2TvrR657YKKU3T9v8ZeSH65WTXG3lw/9mSSXmZ6T84Wax7ZrOgl5bZP76kYnufFarhzFPGJTvzCwv+v/78U3lpSVNjo/QTbYDcpdXuDd+d2yqkNE3b/+fdf4ye6FclvD764hjJLk723uPfyuDbqlVXAS+twvusIDl1Kbu0OPOUWfFnPrKxjn//fUnx0e+Kj7K0CuPzK+EY0tk6RsZTslVkcC0l+zUt03+sshhLiyg2lhZZregzH72xIrG09paWJ3zHt6V60Wtm/5GElyW7PtmVBh83cpnBt1WlTpYWUUwsLbJaXTOb/3rq9sjI8I9/OVFRXr6/sfaXVk119Voe+vnntcHBtbExCf3rT11tnnCPb4ti0jQtrcfjL0vI9P+uLLa3tNbWDprfn39LqyD+/wfJr1PdpcWZp4y6fs9bUlwcM7Cil1ZpkldZqsuOodu+LaJ062BpEcWkv7Ty9vdhceYp4zrcG4eOXz57prK8tOS7REvr7JnK4aHBvOvED8M3G4cdtyT0bz/UNo0+M/2eTSrG0iKKLdnSyvPfh8WZp4zbP/M7OztNjY0Vx8q/+3Jp5eeZ3/s+rYPfwAxUVDna6gl1z24Spdve38ZTkEuLr6lTZsUvLSV+HxZnnjIu5szH7K28PfPyl1bX7CZRurWztIhi6lTz92Fx5injEv467v7eKsnXMy9sNjE7K549k1BR5WirO9Q1s0mUbntL6+DncH6epUUFUqeavw+L3xtFGafzvYmRvTXQ3yfjZ/F0yV1aDneoc2aTKN3aCntpmf59cKRi6v4+LH5vFGVWh5q/31b+0urwhonSrc3D0iL6snY1fx8WvzeKMo6lxdKi3MXSIoqtQ83fh8WZp4xjaRlZWi2uULsnTJRure5QwS4tfkcuZVZH5Gvq/6DK78PizFPGxZx5ZUSW1uqqhA5dmmgYD7R5wkTpdssVKqoczcI5ZGlRwZTwrpP/vw+LM08Zx9JKWVnddPVv663uEFG6NU4G/vSf4ywton+mc9fJ59+HxZmnjGNppaym3XOqe9lh9j2b1MsVunDv+ckGZ8EuLdP/vDJSsXY17zqceco4Rc+8zKXlG18ornfbnUGHO0RkPLsreMzuGxn0FejS4k+Zo4xS9K7DmaeMU/TMy1xaYnX1ZIPz/L3nLe7QLSJjtbhD1fdflV6d3n26UphLy8GfMkcZ1abmXYczTxmn6JkXNpuYmRErK3L64H96+NfJhol3jC0ylCvUNLVxpNa57lrMziGcm2NpUYGk6F2HM08Zp+iZl7y0xMrK+P254np3w+S7FleQSCe7K3hzaqO8afZu/2zWTiBLiwomRe86nHnKOEXPvPylJVZWHgzPHf518vy953Zn0O4iSlCzc6Pm4eujda5sziyWFhVSit51OPOUcYqeeVOWllhZ+eB/erLBWd40a+tfa3IGm51BuzPYTNYucgaapjeqhl9WtMwfqZlanc7SFw3zfGmZ/mfwk4q1eZS863DmKeMUPfNmLa1Ij0bmTt90FlWOEkVXdnWqf2B298ly9k8dS4sKJkXvOpx5yjhFz/ze0lpeJrJEPh9LiwokRe86nHnKOEXPPEuLrFUeLq1b7lC7N0yUbq1q3nU485Rxip55lhZZq3xcWvy965RRrW4l7zqceco4Rc88S4usVX4uLdP/Bm9SMYeadx3OPGWcomeepUXWiqVFBZOidx3OPGWcomde2GzC6xVPnxJZIpYWFUyK3nU485Rxip55lhZZK5YWFUyK3nU485Rxip55lhZZqzxcWi2uYKs7RJRuDndIxbsOZ54yTtEzz9Iia8XSooJJ0bsOZ54yTtEzz9Iia8XSooJJ0bsOZ54yTtEzv7e0njwhskSzs/m4tBzuEFG63VLzrsOZp4xT9MyztMhasbSoYFL0rsOZp4xT9MyztMha5eHSsruCt9whonRrcSl51+HMU8YpeuZZWmSt8m1pHfp1+vp4wPSfv0jF7K6gincdzjxlnKJnnqVF1irfllbZDW/1b+um//xFKnZjMvCnS5NmneOMceYp4xQ988JmEx6PWFoiskT5trRqBldOdS/bXcEWojS7cO/5Sce8Wec4Y5x5yjj9M/9qfX1sbHRnZ0fmeTaEpUWWKt+Wlu/FTnHDjN1p/k9hpFbNzuCxlvmR2XdmneOMceYpsxKe+bW1teGhwapLF8tKS45XfF9WWuJ2u8w620mxtMhS5dvSEkKcdMyfv/e8xRUy/ScyUiW7K1h9/1XpDe/u5/8z5RAfEGee0m3vzF93DfT1DfT1dXd2XDh3rqT46PGKipLio/tVHCvn17SITC4Pl9aHT/97+IqzYeKd6T+XkSrdnNo4Uu9ZD/3NlBN8cJx5SrfImX8w7i4pLo6eVjEd+3OZ2ac7EZYWWao8XFpCiPGlUHHDTMPkO7srSKTfzamNcvvcXdcb+Wc3izjzZLzoMz82OvrjiRMl3yXcW/9+4dw5s492IpGltbhIZIlmZvJxaQkhHsxvHL7iPH/vud0ZJEpY8/RGzcPXR697VZ9ZEZx5SlmyM9/d1Xm84ljM0iotPvpd8dGS4qNVly7e7elZWPD//vGjWcf7CywtslR5u7SEEB8+/e9Jx3y5fc7Wv9bkDDZHfqIhaxc5A03TG1XDLytu+Y/Uu1cD+XHzyAbOPMVn8Mx7PZ4Tx//jiy8dlpVduvifxyu+j37w9Kmf2hyOqcnJQCAg/4TvYWmRpcrnpRXxyB883eEvqhwliq7shrff81bRb4HXx5mnhKU884FA4McTP0QtrdLPu7uRx6cmJ+3NTadP/RS9uo5XfF9fd/XB/ftra2sSD7gQNptwu8XCgikFpuf6ez0V9VMV9VNf2cZM/5+VTC9yGFo6XOsTvpycOq8335cWAMCg3z9+PGc7c6y8rKT46JnKXxJe4JudvdvTU3XpYsxXG6suXRzo75PxRUbzllZXj+eb6qmKlvmLQy/qHr1xuEPdM5u3Z8m6tXnCdY/eXB55eaJ96evqqYt256dZP0sLAJDU593dG9evl5eWdHd2prwy8udv1dddLf9zWfTqOlP5S5vD4Xa7wqFQ9j9EM5ZWYHqurHbyhMPfPB3snd8eWtwZWXpPtF/f/LbDHfrlzsq3VyZXH2f1F7dYWgBQeB49fJDuSNL5ImNjQ0M2v8gofWmtT/gOX56sGn7Z7gkPLrwfXiRK0NDC+66Zzaujb76tnV4anWVpAQByReeLjDXV1QP9fctPn/7xxx8ZPntkafn9ctr1zZfWTlbff9Xj2xpafE+kX59/5/r4268vT3yamc/OIWRpAQB06H+RsauzI+0vMspdWo4u949tC+2e0ODCDpGRbvu2frmzctHuZGkBAGRL9kXGk3850djQMDY2+mp9PcVTSFxagSnfN9VTzdMbA37z79+kUK3u0JGrzqXRWZYWAMA0Ozs7kS8yXjh3Nv6LjMNDg4m/yChxabV3uU60Lfb4tu4t7NB+mqYd8IK0LlOx3vnt0z0rl7Lyy1osLQDAwe1/kbGmujrmi4wXzp2NfJFx76+7ttmEyyXm5yVUUT9VNfyi378zsKBwWpSED0a/NvqamH/dfznmmmTvNK1rjFyvVjcmAocujWfhHHo8LC0AQJYFAoGxsdGEX2S0V3w/1tz06rffJCytQ5fGGycCA/5tpdM0LeHLKR+JeVWyx6Mv0KF/jek/SlmvwxsuqhxlaQEA8l2yLzKWl5XWnDkz3HRzeWDg88xMLpbWV7axVneo37+tdJqmJXw55SMxr0o2kg74gR3kGfK57tlNlhYAQDGfd3fXfv55uOF6zZkz5WWlX3yR8dRPd+vrfT09O5OT2VpaRZWj7d5w3/y20mmalvDlZI9EHox5XP9JdJ4w5g31mf5jlcW6Z7dYWgAABUW+T2tuTszNBR4+HHPcslddOv3D8S/+JuwfjturLo05bgUePoxcmVlFlaMdBbG0dKaMkaWlM56SvceUVxbYropvb2kd4Pjt5XaztAAAEkUtreh2JiZ8PT1dtTUXvvzWrvLSkvpzZ4dvNq4NDX2emclgafXObSmdpmkxLyR8bcyDCR/XeZP9t0om5WWm/0Blt+6ZTZYWAEBBSZZWdJ9nZpYHBoZvNtacOVNeWvLF34T919ORLzL+Pj1tZGm1e8N357aUTtO0hC+nfCTmVQnnkf5TxT9z/FsZfFvl6mJpAQCUZGBpxfTqt98iX2Q8WfF9/BcZp9rbk32RkaWV8gmNPB5/WcrRVgCxtAAAakp/aUWX7IuMx8v/vP9Fxi+Wlid8x7eldJqmZetfdR7UedzIZQbfVqE6WVoAACXZbMLpFD7fwfvs9S739yf9ImNd3f/70dHmCff4tig6TdPSejz+soRM/+/KbntL6+AHlaUFAJAqe0srplcjI/FfZLxk77/t2yJKtw6WFgBASTlbWtHtjI/7bt/+tx9qm0afmX7PJhVjaQEA1CRlaUUqqhxt9YS6ZzeJ0m3vb+NhaQEAFCN9aXXNbhKlWztLCwCgpMjSmp2VUFHlaKs71DWzSZRue0vr4OfQ5WJpAQAkkru0HO5Q58wmUbq1sbQAAEqSvrQ6vGGidGvzsLQAACpiaZEKsbQAAGqSu7RaXKF2T5go3VrdIZYWAEBBNpuYnhYzMxI6dHG8YTzQ5gkTpdstV6iocjQL55ClBQCQSuLSKquZqP5tvdUdIkq3xsnAny48ZmkBAFQjcWnVtEyd6l52mH3PJvVyhS7ce36yfpKlBQBQjcSl5Rt2Fde57c6gwx0iMp7dFTzW7Bu540K/BQUAAASNSURBVGRpAQBUI3FpiZmZk/WT5+89b3GHbhEZq8Udqr7/qrRmcteTjUPI0gIASBVZWl6vnD5MeQ5fnmiYeMfYIkO5Qk1TG0dqptcfubNzCJ1OlhYAQCK5S0t4veP9ruI6d8PkuxZXkEgnuyt4c2qj/ObM3e7sHVGWFgBAKulLS3i9D3qdhy9PnL/33O4M2l1ECWp2btQ8fH30qjObM4ulBQCQzYylJbzeD1Oek/WT5TdnbP1rTc5gszNodwabydpFzkDT9EbV8MuKlvkj1ROr911ZPnssLQCAVCYtrUiPep2nr08WVY4SRVdWM9F/e3rXnYNTx9ICAEhls4mpKeHxEFmi6WmWFgBAIpYWWSqWFgBAKpYWWSqWFgBAKpYWWSqWFgBAKpYWWSqWFgBAqsjScruJLBFLCwAgFUuLLBVLCwAgFUuLLBVLCwAgFUuLLBVLCwAgFUuLLBVLCwAglc0mJieFy0VkiaamWFoAAIlYWmSpWFoAAKlYWmSpWFoAAKlYWmSpWFoAAKlYWmSpWFoAAKkiS8vpJLJEk5MsLQCARCwtslQsLQCAVCwtslQsLQCAVCwtslQsLQCAVDabmJgQ09NEloilBQCQiqVFloqlBQCQiqVFloqlBQCQiqVFloqlBQCQKrK0pqaILNHEBEsLACARS4ssFUsLACAVS4ssFUsLACAVS4ssFUsLACCVzSbGx8XkJJElYmkBAKRiaZGlYmkBAKRiaZGlYmkBAKSKLK2JCSJLND7O0gIASMTSIkvF0gIASMXSIkvF0gIASMXSIkvF0gIASMXSIkvF0gIASGWzicePxfg4kSV6/JilBQCQiKVFloqlBQCQiqVFloqlBQCQ6soV8eCB+fc/IjmxtAAAUjU2inv3zL//Ecnp4UNx+bK5n3MsLQCwkqEh0dEhHj8mskR374rWVnM/51haAGAlL16IhgYxNmb+LZAo142NCbtd+Hzmfs6xtADAYlpbxd275t8FiXLd4KC4cUN8/mzuJxxLCwAs5tMnUVsrHj40/0ZIlLsePRL19SIcNvvzjaUFABb05IloaGBsUcH26JFoahJut9mfaUKwtADAovx+UVsr7t4VY2NEBdXQkLh+PU9mlmBpAYB1ffokWltFU5O4c8f8uyPRwRsYEC0t4to18e6d2Z9d/8TSAgBrW1gQnZ3CZiNSvsZG4fWa/i3wMVhaAAAAucLSAgAAyBWWFgAAQK6wtAAAAHKFpQUAAJArLC0AAIBcYWkBAADkCksLAAAgV1haAAAAucLSAgAAyBWWFgAAQK6wtAAAAHKFpQUAAJArLC0AAIBcYWkBAADkCksLAAAgV1haAAAAucLSAgAAyBWWFgAAQK6wtAAAAHKFpQUAAJArLC0AAIBcYWkBAADkCksLAAAgV1haAAAAucLSAgAAyBWWFgAAQK6wtAAAAHKFpQUAAJArLC0AAIBcYWkBAADkCksLAAAgV1haAAAAucLSAgAAyBWWFgAAQK6wtAAAAHKFpQUAAJArLC0AAIBcYWkBAADkCksLAAAgV1haAAAAucLSAgAAyJX/D8948ahgg4rxAAAAAElFTkSuQmCC" alt="" />

强大的生产者

  /// <summary>
/// 消息生产者
/// 具体消息生产者是单例,如Email,SMS,Rtx等
/// </summary>
public class MessageFactory
{
/// <summary>
/// 消息工厂
/// </summary>
public static IMessageManager GetService(MessageType messageType)
{
switch (messageType)
{
case MessageType.Email:
return EmailMessageManager.Instance;
case MessageType.SMS:
return SMSMessageManager.Instance;
case MessageType.RTX:
return RTXMessageManager.Instance;
default:
throw new NotImplementedException("消息生产者未被识别...");
}
} }

RTX生产者的实现

   /// <summary>
/// RTX消息服务
/// </summary>
internal class RTXMessageManager : IMessageManager
{
#region Singleton
private static object lockObj = new object();
public static RTXMessageManager Instance;
static RTXMessageManager()
{
lock (lockObj)
{
if (Instance == null)
Instance = new RTXMessageManager();
}
}
private RTXMessageManager()
{ }
#endregion private string EncodingString(string str)
{
return HttpUtility.UrlEncode(str, Encoding.GetEncoding("GB2312"));
} private string rtxUrl = System.Configuration.ConfigurationManager.AppSettings["RtxApi"] ??
"http://192.168.1.8:8012/sendnotifynew.cgi?"; #region IMessageManager 成员 public void Send(string recipient, string subject, string body)
{
Send(new List<string> { recipient }, subject, body);
} public void Send(IEnumerable<string> recipients, string subject, string body)
{
try
{
var dic = new Dictionary<string, string>()
{ {"title",EncodingString(subject)},
{"msg",EncodingString(body)},
{"receiver", EncodingString(string.Join(",",recipients))},
{"delaytime",""}
};
StringBuilder str = new StringBuilder();
foreach (var item in dic)
{
str.Append(item.Key + "=" + item.Value + "&");
}
new HttpClient().GetAsync(rtxUrl + str.ToString()).Wait();
}
catch (Exception ex)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(ex.Message);
}
} public void Send(IEnumerable<string> recipients, string subject, string body, bool isAsync)
{
if (isAsync)
Task.Run(() =>
{
Send(recipients, subject, body);
});
else
Send(recipients, subject, body);
} #endregion
}

回到目录

我心中的核心组件(可插拔的AOP)~消息组件~完善篇的更多相关文章

  1. 我心中的核心组件(可插拔的AOP)~大话开篇及目录

    回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法 ...

  2. 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器

    回到目录 AOP面向切面的编程,也称面向方面的编程,我更青睐于前面的叫法,将一个大系统切成多个独立的部分,而这个独立的部分又可以方便的插拔在其它领域的系统之中,这种编程的方式我们叫它面向切面,而这些独 ...

  3. 我心中的核心组件(可插拔的AOP)~第四回 异常拦截器

    回到目录 之前说过有关拦截器的文章,第二回  缓存拦截器,事实上,在那讲里说的最多是AOP和缓存组件,对于拦截的概念并没有详细的说明,这一讲,不说AOP,主要说一下拦截器,拦截器Interceptio ...

  4. 我心中的核心组件(可插拔的AOP)~第五回 消息组件

    回到目录 之所以把发消息拿出来,完全是因为微软的orchard项目,在这个项目里,将公用的与领域无关的功能模块进行抽象,形成了一个个的组件,这些组件通过引用和注入的方式进行工作,感觉对于应用程序的扩展 ...

  5. 我心中的核心组件(可插拔的AOP)~第六回 消息组件~续

    回到目录 上一回写消息组件已经是很久之前的事了,这一次准备把消息组件后续的东西说一下,事实上,第一篇文章主要讲的是发消息,而这一讲最要讲的是收消息,简单的说,就是消息到了服务器之后,如何从服务器实时的 ...

  6. 我心中的核心组件(可插拔的AOP)~调度组件quartz.net

    回到目录 quartz.net是一个任务调度组件,它可以灵活的设置你的调试方式,按时间,按日期,按周期都可以很容易的实现,quartz不仅可以用在web中,而且还可以部署在winform,winser ...

  7. 我心中的核心组件(可插拔的AOP)~第十二回 IoC组件Unity

    回到目录 说在前 Ioc组件有很多,之前也介绍过autofac,castle等,今天再来说一下在微软Nlayer DDD架构里使用的unity组件,今天主要说一下依靠注入,如果希望看拦截的用法,可以阅 ...

  8. 我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception

    回到目录 说在前 本节主要说一下Unity家族里的拦截组件,对于方法拦截有很多组件提供,基本上每个Ioc组件都有对它的实现,如autofac,它主要用在orchard项目里,而castle也有以拦截的 ...

  9. 我心中的核心组件(可插拔的AOP)~第十五回 我的日志组件Logger.Core(策略,模版方法,工厂,单例等模式的使用)

    回到目录 之前的讲过两篇关于日志组件的文章,分别是<第一回  日志记录组件之自主的Vlog>和<第三回  日志记录组件之log4net>,而今天主要说一下我自己开发的另一种日志 ...

随机推荐

  1. 断言(ASSERT)的用法

    ASSERT ()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继续执行后面的语句.这个宏通常原来判 ...

  2. floyd算法小结

    floyd算法是被大家熟知的最短路算法之一,利用动态规划的思想,f[i][j]记录i到j之间的最短距离,时间复杂度为O(n^3),虽然时间复杂度较高,但是由于可以处理其他相似的问题,有着广泛的应用,这 ...

  3. 阿里云RDS for MySQL备份文件+binlog恢复过程中碰到的一些问题

    1.一开始通过官方下载有的压缩包安装,碰到各种依赖问题,最后采用YUM安装 1.通过yum安装percona-Xtrabackup 1.1 先安装依赖: yum install perl-DBI yu ...

  4. JS实现回到顶部效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. Log4j 与 Logback的ConversionPattern对比

    为了能将log4j的配置无缝转到logback,需要了解其中ConversionPattern的差异,以下是对比表格,内容来自: log4j官网 logback官网 其中可能需要转换的地方主要有两块: ...

  6. iOS进阶_动画的多种实现方式

    一.UIView动画 //UIView动画有开始beginAnimation,有结束commitAnimation    //第一步:开始UIView动画    [UIView beginAnimat ...

  7. Ajax&json

    通过json-lib方式 复杂情况:

  8. Unity : Ran out of trampolines of type 2

    Unity 导出游戏到 iOS 平台,当时选择的设置是 mono2x, 结果游戏各种莫名其妙的崩溃,再崩溃, 几乎运行不到一分钟就崩溃,而在 editor 和 android 平台都是正常的. 查看出 ...

  9. overview

    [1] Don’t panic! All will become clear in time; [2] You don’t have to know every detail of C++ to wr ...

  10. CA Loves GCD (BC#78 1002) (hdu 5656)

    CA Loves GCD  Accepts: 135  Submissions: 586  Time Limit: 6000/3000 MS (Java/Others)  Memory Limit: ...