I generally book directly with the cruise line and keep control of the booking until shortly before final payment. That way I can watch for price reductions, senior pricing, better cabin location etc. (Most agents don't have the time to do this for you on a regular basis -- i.e. several times a week) I start hunting for offers of paid tips, OBC (Onboard Credit) and other amenities offered by most online agents, and then transfer the booking to them just before the final payment is due. Once you have made final payment you are locked into your reservation -- either with the cruise line or the agency. Watch out for agencies that charge cancellation fees, change fees, etc. before final payment.
I also highly recommend
www.cruisecompete.com Agents will make their best offers to get your business, even if you have already booked.